. * * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ require_once 'classes/model/Session.php'; /** * Sessions - Sessions * /** * Sessions - Sessions class * @package workflow.engine.ProcessMaker */ class Sessions { protected $tmpfile; private $sessionId; private $globals; /** * This function is the constructor of the Sessions class * * @param string $sSessionId * @return void */ public function __construct($sSessionId = NULL) { $this->sessionId = $sSessionId; } /** * This function gets the user session * * * @name getSessionUser * * @param string sSessionId * @return array */ public function getSessionUser($sSessionId = NULL) { try { if ($sSessionId != NULL) { $this->sessionId = $sSessionId; } else if ($this->sessionId == NULL) { throw new Exception('session id was not set.'); } $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(SessionPeer::USR_UID); $oCriteria->addSelectColumn(SessionPeer::SES_STATUS); $oCriteria->addSelectColumn(SessionPeer::SES_DUE_DATE); $oCriteria->add(SessionPeer::SES_UID, $this->sessionId); $oDataset = SessionPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $aRow = $oDataset->getRow(); if (!is_array($aRow)) { $this->deleteTmpfile(); } return $aRow; } catch (Exception $oError) { throw ($oError); } } /** * This function checks the user session * * * @name verifySession * * @param string sSessionId * @return array */ public function verifySession($sSessionId = NULL) { try { if ($sSessionId != NULL) { $this->sessionId = $sSessionId; } else if ($this->sessionId == NULL) { throw new Exception('session id was not set.'); } $date = date('Y-m-d H:i:s'); $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(SessionPeer::USR_UID); $oCriteria->addSelectColumn(SessionPeer::SES_STATUS); $oCriteria->addSelectColumn(SessionPeer::SES_DUE_DATE); $oCriteria->add(SessionPeer::SES_UID, $this->sessionId); $oCriteria->add(SessionPeer::SES_STATUS, 'ACTIVE'); $oCriteria->add(SessionPeer::SES_DUE_DATE, $date, Criteria::GREATER_EQUAL); $oDataset = SessionPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro')); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $aRow = $oDataset->getRow(); if (!is_array($aRow)) { $this->deleteTmpfile(); } return $aRow; } catch (Exception $oError) { throw ($oError); } } /** * This function registers into globals variables * * * @name registerGlobal * * @param string $name * @param string $value * @return void */ public function registerGlobal($name, $value) { $this->tmpfile = G::sys_get_temp_dir() . PATH_SEP . "pm-rg-{$this->sessionId}"; if ($this->sessionId == NULL) { throw new Exception('session id was not set.'); } $tmpfile_content = ''; if (is_file($this->tmpfile) && trim(file_get_contents($this->tmpfile)) != '') { $tmpfile_content = file_get_contents($this->tmpfile); } //getting the global array if ($tmpfile_content != '') { $this->globals = unserialize($tmpfile_content); } else { $this->globals = Array(); } //registering the new global variable $this->globals[$name] = $value; //saving the global array $tmpfile_content = serialize($this->globals); file_put_contents($this->tmpfile, $tmpfile_content); } /** * This function gets a global variable * * * @name getGlobal * * @param string $name * @return string */ public function getGlobal($name) { $this->tmpfile = G::sys_get_temp_dir() . PATH_SEP . "pm-rg-{$this->sessionId}"; if ($this->sessionId == NULL) { throw new Exception('session id was not set.'); } $tmpfile_content = ''; if (is_file($this->tmpfile) && trim(file_get_contents($this->tmpfile)) != '') { $tmpfile_content = file_get_contents($this->tmpfile); } //getting the global array if ($tmpfile_content != '') { $this->globals = unserialize($tmpfile_content); } else { $this->globals = Array(); } //getting the new global variable if (isset($this->globals[$name])) { return $this->globals[$name]; } else { return ''; } } /** * This function gets all globals variables * * * @name getGlobals * * @param string $name * @return array */ public function getGlobals() { $this->tmpfile = G::sys_get_temp_dir() . PATH_SEP . "pm-rg-{$this->sessionId}"; if ($this->sessionId == NULL) { throw new Exception('session id was not set.'); } $tmpfile_content = ''; if (is_file($this->tmpfile) && trim(file_get_contents($this->tmpfile)) != '') { $tmpfile_content = file_get_contents($this->tmpfile); } //getting the global array if ($tmpfile_content != '') { $this->globals = unserialize($tmpfile_content); } else { $this->globals = Array(); } return $this->globals; } /** * This function removes a temporal file * * * @name deleteTmpfile * * param * @return void */ private function deleteTmpfile() { if ($this->sessionId == NULL) { throw new Exception('session id was not set.'); } $this->tmpfile = G::sys_get_temp_dir() . PATH_SEP . "pm-rg-{$this->sessionId}"; @unlink($this->tmpfile); } }