A
download class.RecordLock.php
Language: PHP
LOC: 68
Project Info
FreeMED Project(freemed)
Server: SourceForge
Type: cvs
...reemed\freemed\freemed\lib\
   acl.php
   API.php
   bcadd.php
   calendar-functions.php
   class.AdminModule.php
   class.Agata.php
   class.Authorizations.php
   class.BaseModule.php
   class.BillingModule.php
   class.CalendarModule.php
   class.ClaimLog.php
   class.Coverage.php
   class.Debug.php
   class.diagnosis_set.php
   class.Djvu.php
   class.EMRModule.php
   class.Fax.php
   class.FixedFormEntry.php
   ...s.FixedFormRenderer.php
   class.FormRenderer.php
   class.FreeMEDSelfTest.php
   class.GeneralConfig.php
   class.GraphModule.php
   class.Guarantor.php
   class.Handler_HL7v2.php
   ...s.Handler_HL7v2_A04.php
   ...s.Handler_HL7v2_A08.php
   ...s.Handler_HL7v2_S12.php
   ...s.Handler_HL7v2_S15.php
   class.InsuranceCompany.php
   class.LanguageRegistry.php
   class.Ledger.php
   ...s.MaintenanceModule.php
   class.Messages.php
   class.OMBS_Patient.php
   class.OMBS_Wrapper.php
   class.Parser_HL7v2.php
   class.Patient.php
   class.Payer.php
   class.PHPlot.php
   class.Physician.php
   class.Procedure.php
   class.RecordLock.php
   class.Remitt.php
   class.ReportsModule.php
   class.rxlist.php
   class.Scheduler.php
   class.TeX.php
   class.User.php
   class.UtilityModule.php
   class.vCalendar.php
   class.vCalendarEvent.php
   error_handler.php
   freemed.php
   i18n.php
   iso-set.php
   macros.php
   mail-functions.php
   settings.php
   settings.php.tmpl
   xml.php
   xmlrpc_services.php

<?php
	// $Id: class.RecordLock.php,v 1.1 2005/07/14 18:19:30 rufustfirefly Exp $
	// $Author: rufustfirefly $

// Class: FreeMED.RecordLock
//
//	Handle individual table row locking.
//

class RecordLock {

	// Constructor: RecordLock
	//
	//	Creates a recordlock object for a particular table.
	//
	// Parameters:
	//
	//	$table - Table name
	//
	function RecordLock ( $table ) {
		$this->table = $table;
		$this->user = CreateObject('_FreeMED.User');
		$this->expiry = (RECORD_LOCK_TIMEOUT + 0) ? RECORD_LOCK_TIMEOUT : 180;
	} // end constructor

	// Method: IsLocked
	//
	//	Determine if a particular row has been locked.
	//
	// Parameters:
	//
	//	$row - id of record to be checked
	//
	// Returns:
	//
	//	User number if a particular user has the record locked, otherwise
	//	returns false.
	//
	function IsLocked ( $row ) {
		$query = "SELECT * FROM recordlock WHERE ".
			"locksession <> '".session_id()."' AND ".
			"locktable='".addslashes($this->table)."' AND ".
			"lockrow='".addslashes($row)."' AND ".
			"( (CURRENT_TIMESTAMP + 0) - (lockstamp + 0) ) < ".$this->expiry;
		$result = $GLOBALS['sql']->query( $query );
		if ($GLOBALS['sql']->results($result)) {
			$a = $GLOBALS['sql']->fetch_array($result);
			return $a['lockuser'];
		} else {
			return false;
		}
	} // end method IsLocked

	// Method: LockRow
	//
	//	Lock the specified row, or renew a currently held lock.
	//
	// Parameters:
	//
	//	$row - Row id in question
	//
	// Returns:
	//
	//	Boolean, success.
	//
	function LockRow ( $row ) {
		// Find out if we already have *a* row locked ...
		$u = CreateObject('_FreeMED.User');
		$query = "SELECT * FROM recordlock WHERE ".
			"locksession='".session_id()."' AND ".
			"locktable='".addslashes($this->table)."' AND ".
			"lockrow='".addslashes($row)."' AND ".
			"( (CURRENT_TIMESTAMP + 0) - (lockstamp + 0) ) < ".$this->expiry;
		$result = $GLOBALS['sql']->query( $query );
		if ($GLOBALS['sql']->results($result)) {
			$a = $GLOBALS['sql']->fetch_array($result);
			$query = $GLOBALS['sql']->update_query(
				'recordlock',
				array ( 'lockstamp' => SQL__NOW ),
				array ( 'id' => $a['id'] )
			);
		} else {
			$query = $GLOBALS['sql']->insert_query(
				'recordlock',
				array (
					'lockstamp' => SQL__NOW,
					'locksession' => session_id(),
					'lockuser' => $u->user_number,
					'locktable' => $this->table,
					'lockrow' => $row
				)
			);
		}
		$result = $GLOBALS['sql']->query ( $query );
		if ($result) {
			return true;
		} else {
			return false;
		}
	} // end method LockRow

	// Method: UnlockRow
	//
	//	Remove any locks held on a particular table row
	//
	// Parameters:
	//
	//	$row - Table row in question
	//
	// Returns:
	//
	//	Boolean, success.
	//
	function UnlockRow ( $row ) {
		$query = "DELETE FROM recordlock WHERE ".
			"locktable='".addslashes($this->table)."' AND ".
			"lockrow='".addslashes($row)."'";
		$result = $GLOBALS['sql']->query( $query );
		if ($result) {
			return true;
		} else {
			return false;
		}
	} // end method UnlockRow

} // end class RecordLock

?>

About Koders | Resources | Downloads | Support | Black Duck | Terms of Service | DMCA | Privacy Policy | Contact Us