Location: PHPKode > projects > DIY Blog > diy-blog/lib/propel/runtime-php4/classes/propel/om/BaseObject.php
<?php
/*
 *  $Id: BaseObject.php 536 2007-01-10 14:30:38Z heltem $
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the LGPL. For more information please see
 * <http://propel.phpdb.org>.
 */

require_once 'propel/om/Persistent.php';

/**
* phpname type
* e.g. 'AuthorId'
*/
define('TYPE_PHPNAME', 'phpName');

/**
* column (peer) name type
* e.g. 'book.AUTHOR_ID'
*/
define('TYPE_COLNAME', 'colName');

/**
* column fieldname type
* e.g. 'author_id'
*/
define('TYPE_FIELDNAME', 'fieldName');

/**
* num type
* simply the numerical array index, e.g. 4
*/
define('TYPE_NUM', 'num');

/**
 * This class contains attributes and methods that are used by all
 * business objects within the system.
 *
 * @author     Kaspars Jaudzems <hide@address.com> (Propel)
 * @author     Hans Lellelid <hide@address.com> (Propel)
 * @author     Frank Y. Kim <hide@address.com> (Torque)
 * @author     John D. McNally <hide@address.com> (Torque)
 * @version    $Revision: 536 $
 */

class BaseObject extends Persistent
{

  /**
  * attribute to determine if this object has previously been saved.
  * @var        boolean
  */
  var $_new = true;

  /**
  * attribute to determine whether this object has been deleted.
  * @var        boolean
  */
  var $_deleted = false;

  /**
  * The columns that have been modified in current object.
  * Tracking modified columns allows us to only update modified columns.
  * @var        array
  */
  var $modifiedColumns = array();


  /**
  * Returns whether the object has been modified.
  *
  * @return     boolean True if the object has been modified.
  */
  function isModified()
  {
	return ! empty($this->modifiedColumns);
  }

  /**
  * Has specified column been modified?
  *
  * @param      string $col
  * @return     boolean True if $col has been modified.
  */
  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.
  */
  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.
  */
  function setNew($b)
  {
	$this->_new = (boolean) $b;
  }

  /**
  * Whether this object has been deleted.
  * @return     boolean The deleted state of this object.
  */
  function isDeleted()
  {
	return $this->_deleted;
  }

  /**
  * Specify whether this object has been deleted.
  * @param      boolean $b The deleted state of this object.
  * @return     void
  */
  function setDeleted($b)
  {
	$this->_deleted = (boolean) $b;
  }

  /**
  * Sets the modified state for the object to be false.
  * @return     void
  */
  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 <code>BaseObject</code> instance.  If
  * <code>obj</code> is an instance of <code>BaseObject</code>, delegates to
  * <code>equals(BaseObject)</code>.  Otherwise, returns <code>false</code>.
  *
  * @param      obj The object to compare to.
  * @return     Whether equal to the object specified.
  */
  function equals($obj)
  {
	if (! is_object($obj)) {
	  return false;
	}

	if ($this === $obj) {
	  return true;
	}
	else if ($this->getPrimaryKey() === null || $obj->getPrimaryKey() === null)  {
	  return false;
	}
	else {
	  return ($this->getPrimaryKey() === $obj->getPrimaryKey());
	}
  }

  /**
  * If the primary key is not <code>null</code>, return the hashcode of the
  * primary key.  Otherwise calls <code>Object.hashCode()</code>.
  *
  * @return     int Hashcode
  */
  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 to the Propel::log().
  *
  * @param      string $msg
  * @param      int $priority
  *
  * @return     bool
  */
  function log($msg, $priority = PROPEL_LOG_INFO)
  {
	return Propel::log($msg, $priority);
  }

}
Return current item: DIY Blog