/** * Generates JSON from FeaturesList and DataDescription that initializes ARDesigner. * */ function features() { $document =& JFactory::getDocument(); $document->setMimeEncoding('application/json'); $viewName = JRequest::getVar('view', 'features'); $viewType = 'raw'; $view =& $this->getView($viewName, $viewType); $query_id = JRequest::getInt('id_query', NULL); $view->assign('value', ''); if ($query_id != NULL) { if (!class_exists('KbiModelQueries')) { $kbi = JComponentHelper::getComponent('com_kbi', true); if ($kbi->enabled) { JLoader::import('queries', self::$com_kbi_admin . DS . 'models'); JLoader::import('sources', self::$com_kbi_admin . DS . 'models'); } else { throw new Exception(JText::_('Component com_kbi not found / enabled!')); } } $model_queries = new KbiModelQueries(); $query = $model_queries->getQuery($query_id); $model_sources = new KbiModelSources(); $source = $model_sources->getSource(JRequest::getInt('id_source', NULL)); KBIDebug::log($source); $featurelist = !empty($query->featurelist) ? $query->featurelist : $this->featurelist; if (!empty($source->dictionaryquery)) { $datadescription = $source->dictionaryquery; } else { $kbi_source = KBIntegrator::create(get_object_vars($source)); if ($kbi_source instanceof ISynchronable) { $datadescription = $kbi_source->getDataDescription(); } else { $datadescription = $this->datadescription; } } } else { $featurelist = $this->featurelist; $datadescription = $this->datadescription; } if (class_exists('KBIDebug')) { KBIDebug::log(array('featurelist' => $featurelist, 'datadescription' => $datadescription), 'Loading ARD with FL and DL'); } $sr = new GetDataARBuilderQuery($datadescription, $featurelist, null, 'en'); $result = $sr->getData(); $view->assignRef('value', $result); $view->display(); }
/** * * * @param mixed $value id | array | object | json */ function setSource($value) { $config = array(); if (is_numeric($value)) { if (!class_exists('KbiModelSources')) { JLoader::import('sources', COM_KBI_ADMIN . DS . 'models'); } $sources = new KbiModelSources(); $config = get_object_vars($sources->getSource($value)); } elseif (is_array($value)) { $config = $value; } elseif (is_string($value)) { $config = json_decode($value, true); } else { $config = $value; } if (!is_array($config)) { throw new Exception("Not valid source configuration"); } $this->source = KBIntegrator::create($config); }
function storeDocument() { //$view =& $this->getView('synchronize', $document->getType()); $id = JRequest::getVar('source', null, 'method', 'int'); $pmml = JRequest::getVar('content', NULL, 'default', 'none', JREQUEST_ALLOWRAW); $pmml_id = JRequest::getVar('id', time(), 'default', 'none'); $pmml_name = JRequest::getVar('title', "Document " . date("Y-m-d H:i:s"), 'default', 'none'); $model = new KbiModelSources(); $sourceConfig = $model->getSource($id); $source = KBIntegrator::create(get_object_vars($sourceConfig)); $document = (object) array('id' => $pmml_id, 'title' => $pmml_name, 'modified' => date("Y-m-d H:i:s"), 'text' => $pmml, 'reportUri' => ''); try { if ($document && $source instanceof ISynchronable) { $source->addDocument($document->id, $document, FALSE); echo json_encode($document); //$view->assignRef('document', $document); } } catch (Exception $ex) { //TODO: add document title to error message echo json_encode(array('error' => $ex->getMessage())); } }