예제 #1
0
 function __testDatabaseFields($workflowIDs, $timeStamps, $xmlPackage, $valueMode)
 {
     $workflowIDsSize = sizeof($workflowIDs);
     for ($workflowIndex = 0; $workflowIndex < $workflowIDsSize; $workflowIndex++) {
         $newDataItem = new coreWorkflowDataPacket($workflowIDs[$workflowIndex], $timeStamps[$workflowIndex]);
         $tables = $xmlPackage->getTables();
         //For each table
         $tableSize = sizeof($tables);
         for ($tableIndex = 0; $tableIndex < $tableSize; $tableIndex++) {
             $table = $tables[$tableIndex]->getTableName();
             $fields = $tables[$tableIndex]->getDbFields();
             $fieldsSize = sizeof($fields);
             //The fields specificed
             for ($index = 0; $index < $fieldsSize; $index++) {
                 $field = $fields[$index];
                 $sql_query = "workflowId='{$workflowIDs[$workflowIndex]}'";
                 $dbvalue = dbpear::selAttribute($field, $table, "{$sql_query}");
                 $newDataItem->addId($field);
                 //False may be posted from db;
                 if ($dbvalue != 'false' && $dbvalue) {
                     if ($valueMode) {
                         //Store the value rather than presence
                         $newDataItem->addValue($dbvalue);
                     } else {
                         $newDataItem->addValue(true);
                     }
                 } else {
                     //Store the value rather than presence
                     if ($valueMode) {
                         $newDataItem->addValue($dbvalue);
                     } else {
                         $newDataItem->addValue(false);
                     }
                 }
             }
         }
         $db = connect('iWFMS');
         switch ($valueMode) {
             case 'archive':
                 workflowDisplayHTML::html_displayXMLArchive($newDataItem, false);
                 break;
             case 'archiveView':
                 workflowDisplayHTML::html_displayXMLArchive($newDataItem, true);
                 break;
             case 'data':
                 workflowDisplayHTML::html_displayXMLData($newDataItem);
                 break;
             default:
                 workflowDisplayHTML::html_displayXML($newDataItem);
                 break;
         }
         $db = connect($xmlPackage->getDb());
     }
 }
예제 #2
0
 function updateDatabases($xmlPackage, $workflowId, $formData, $goal)
 {
     global $db;
     $db = connect($xmlPackage->getDb());
     debug::message("connect to db:" . $xmlPackage->getDb() . '<br>');
     $newDataItem = new coreWorkflowDataPacket($workflowId, array());
     $tables = $xmlPackage->getTables();
     if (sizeof($tables) > 0) {
         //For each table
         for ($tableIndex = 0; $tableIndex < sizeof($tables); $tableIndex++) {
             $table = $tables[$tableIndex]->getTableName();
             $valsArray['workflowId'] = $workflowId;
             $fields = $tables[$tableIndex]->getDbFields();
             //The fields specificed
             for ($index = 0; $index < sizeof($fields); $index++) {
                 $field = $fields[$index];
                 $valsArray[$field] = addslashes($formData[$field]);
             }
             //Does this workflow item already exist in the table
             $sql_query = "workflowId='{$workflowId}'";
             if (dbpear::numRecords($table, "{$sql_query}")) {
                 $keyName = dbs::getprimarykey($table);
                 $keyValue = dbpear::selAttribute($keyName, $table, $sql_query);
                 dbs::updaterecord($table, $valsArray, $keyName, $keyValue);
             } else {
                 dbs::irrecord($table, $valsArray, false);
             }
             $db = connect('iWFMS');
         }
         $xmlParser = new XMLtoArray("jobSpecification.xml");
         $xmlTree = $xmlParser->process();
         //Package the xml data
         $xmlPackage = xmlPackage::package($xmlTree);
         if (!$goal) {
             //We are not at the goal node
             //Display the data as HTML
             xmlPackage::displayItem($xmlPackage, $workflowId, 'workflow', 'Current workflow item');
         } else {
             //We are at the goal node
             xmlPackage::displayArchiveItem($xmlPackage, $workflowId, 'workflowArchive', 'Current archived workflow item', 'archive');
         }
     } else {
         $xmlParser = new XMLtoArray("jobSpecification.xml");
         $xmlTree = $xmlParser->process();
         //Package the xml data
         $xmlPackage = xmlPackage::package($xmlTree);
         //Display the data as HTML
         xmlPackage::displayItem($xmlPackage, $workflowId, 'workflow', 'Current workflow item');
     }
 }