Quick search:

PntDatabaseConnection
PntDbClassDescriptor
PntDbError
PntDbObject
PntQueryHandler
Template
getDeleteErrorMessages
__construct
addDbFieldProps
addVerifyOnDeleteValues
checkValueInOptions
copyValuesOf
delete
getClassDescriptorClass
getFilters
getLabel
getLabelSeparator
getLabelSort
getOnDeleteErrorMessage
getOnDeleteProps
getPropsForCheckOptions
getPropsForRecurseCopy
getSaveErrorMessages
getTableName
getValueNoOptionErrorMessage
getValueWithIdNoOptionErrorMessage
initFromData
initMissingFields
initPropertyDescriptors
isNew
isPersistent
loadData
newQueryHandler
pntDelete
pntSacve. If you need to * do aditional work that ::save normally does, you need to override this
recurseCopyFrom
recurseDelete
registerCopyFrom
save


	/** This method is called by ObjectDeleteAction before delete() is called. 
	* If the result of this method is not empty,
    * delete() is not called and the error messages are set to the page forwarded to.
    * As of version 2.0.alpha this method adds error messages for 
    * multi value properties onDelete = 'c' and recurses for multi value properties
    * onDelete is set
	* @return arrray of String with error messages, or empty array if none
	* @param array of PntObjects $cascading from which the caller is cascading by the paths from each  
	* @throws PntErorr 
	*/
	function getDeleteErrorMessages()) {
		$result = array();
		forEach ($this->getOnDeleteProps($cascading) as $propName => $prop) {
			$values = $prop->getValueFor($this, false); //do not use global filter
			if ($prop->getOnDelete() == 'c') {
				if (count($values) > 0)
					$result[] = $this->getOnDeleteErrorMessage($prop, $values);
			} else {
				if (empty($cascading)) {
					$nextPath = $propName;
				} else {
					end($cascading);
					$nextPath = key($cascading).'.'.$propName;
				}
				$nextCascading = $cascading; //copy
				$nextCascading[$nextPath]=$this;
				forEach(array_keys($values) as $key)
					$result = array_merge($result, $values[$key]->getDeleteErrorMessages($nextCascading));
			}
		}
		return $result;
	}
Copyright (c) MetaClass, 2003-2013

This code is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

Click here for a copy of the license or see http://www.gnu.org/licenses/ .