All pastes #506237 Raw Edit

Stuff

public php v1 · immutable
·published 2007-05-23 21:49 UTC
rendered paste body
    public function save(ezcWorkflow $workflow)    {		// verify workflow		$workflow->verify();				// calc new version number		$workflowVersion = $this->getCurrentVersionNumber($workflow->getName()) + 1;				try {    		$this->_conn->beginTransaction();		    		// Mark version that is currenlty the lastest version as old.    		if ($workflowVersion > 1) {    			$sql = "WHERE workflow_name = '%s' AND workflow_version_is_latest = %s";    			$workflowData =     				Axiom_Model::getModel('Workflow')->findByQuery(sprintf($sql, $workflow->getName(), 1));    			$workflowData->workflow_version_is_latest = 0;    			$workflowData->save();    		}		    		// Write workflow table row    		$newWorkflowData = new Workflow();    		$newWorkflowData->workflow_name = $workflow->getName();    		$newWorkflowData->workflow_version = $workflowVersion;    		$newWorkflowData->workflow_created = date('Y-m-d H:i:s', time());    		$newWorkflowData->workflow_version_is_latest = 1;    		$newWorkflowData->save();    		    		$workflow->setId($newWorkflowData->id);    		$workflow->setVersion($workflowVersion);		    		// Write node table rows.    		foreach ($workflow->getNodes() as $node) {    			$nodeData = new Node();    			$nodeClass = get_class($node);    			$nodeConfiguration = $this->serialize($node->getConfiguration());			                // $nodeData->id = $workflow->getId();    			$nodeData->node_class = $nodeClass;    			$nodeData->node_configuration = $nodeConfiguration;    			$nodeData->workflow_id = $newWorkflowData->id;    			$nodeData->save();			    			$node->setId($nodeData->node_id);    		}		    		// Connect node table rows.    		foreach ($workflow->getNodes() as $node) {    			foreach ($node->getOutNodes() as $outNode) {    				$nodeConnData = new NodeConnection();    				$nodeConnData->incoming_node_id = $node->getId();    				$nodeConnData->outgoing_node_id = $outNode->getId();    				$nodeConnData->save();    			}    		}		    		// Write variable handler row    		foreach ($workflow->getVariableHandlers() as $variable => $class) {    			$varHandlerData = new VariableHandler();    			$varHandlerData->id = $workflow->getId();    			$varHandlerData->variable = $variable;    			$varHandlerData->class = $class;    			$varHandlerData->save();    		}		    		$this->_conn->commit();    		} catch (Doctrine_Exception $e) {		    $conn->rollback();		    throw new Axiom_Workflow_Exception(				'Could not load definition from db.'			);		}    }