예제 #1
0
 /**
  * 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();
 }
예제 #2
0
 /**
  *
  *
  * @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);
 }
예제 #3
0
 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()));
     }
 }