. */ require_once 'propel/om/Persistent.php'; /** * This class contains attributes and methods that are used by all * business objects within the system. * * @author Hans Lellelid (Propel) * @author Frank Y. Kim (Torque) * @author John D. McNally (Torque) * @version $Revision: 536 $ * @package propel.om */ abstract class BaseObject { /** * attribute to determine if this object has previously been saved. * @var boolean */ private $_new = true; /** * attribute to determine whether this object has been deleted. * @var boolean */ private $_deleted = false; /** * The columns that have been modified in current object. * Tracking modified columns allows us to only update modified columns. * @var array */ protected $modifiedColumns = array(); /** * Returns whether the object has been modified. * * @return boolean True if the object has been modified. */ public function isModified() { return !empty($this->modifiedColumns); } /** * Has specified column been modified? * * @param string $col * @return boolean True if $col has been modified. */ public function isColumnModified($col) { return in_array($col, $this->modifiedColumns); } /** * Returns whether the object has ever been saved. This will * be false, if the object was retrieved from storage or was created * and then saved. * * @return true, if the object has never been persisted. */ public function isNew() { return $this->_new; } /** * Setter for the isNew attribute. This method will be called * by Propel-generated children and Peers. * * @param boolean $b the state of the object. */ public function setNew($b) { $this->_new = (boolean) $b; } /** * Whether this object has been deleted. * @return boolean The deleted state of this object. */ public function isDeleted() { return $this->_deleted; } /** * Specify whether this object has been deleted. * @param boolean $b The deleted state of this object. * @return void */ public function setDeleted($b) { $this->_deleted = (boolean) $b; } /** * Sets the modified state for the object to be false. * @param string $col If supplied, only the specified column is reset. * @return void */ public function resetModified($col = null) { if ($col !== null) { while (($offset = array_search($col, $this->modifiedColumns)) !== false) array_splice($this->modifiedColumns, $offset, 1); } else { $this->modifiedColumns = array(); } } /** * Compares this with another BaseObject instance. If * obj is an instance of BaseObject, delegates to * equals(BaseObject). Otherwise, returns false. * * @param obj The object to compare to. * @return Whether equal to the object specified. */ public function equals($obj) { if (is_object($obj)) { if ($this === $obj) { return true; } elseif ($this->getPrimaryKey() === null || $obj->getPrimaryKey() === null) { return false; } else { return ($this->getPrimaryKey() === $obj->getPrimaryKey()); } } else { return false; } } /** * If the primary key is not null, return the hashcode of the * primary key. Otherwise calls Object.hashCode(). * * @return int Hashcode */ public function hashCode() { $ok = $this->getPrimaryKey(); if ($ok === null) { return crc32(serialize($this)); } return crc32(serialize($ok)); // serialize because it could be an array ("ComboKey") } /** * Logs a message using Propel::log(). * * @param string $msg * @param int $priority One of the Propel::LOG_* logging levels * @return boolean */ protected function log($msg, $priority = Propel::LOG_INFO) { return Propel::log(get_class($this) . ': ' . $msg, $priority); } }