public function getField($field, $unformatted=false, $includeBaseMapped=false, $skipValidation=false) { //Z_Core::debug("Requesting field '$field' for item $this->id", 4); if (($this->_id || $this->_key) && !$this->loaded['primaryData']) { $this->loadPrimaryData(); } if ($field == 'id' || Zotero_Items::isPrimaryField($field)) { //Z_Core::debug("Returning '" . $this->{"_$field"} . "' for field $field", 4); return $this->{"_$field"}; } if ($this->isNote()) { switch ($field) { case 'title': return $this->getNoteTitle(); default: return ''; } } if ($includeBaseMapped) { $fieldID = Zotero_ItemFields::getFieldIDFromTypeAndBase( $this->itemTypeID, $field ); } if (empty($fieldID)) { $fieldID = Zotero_ItemFields::getID($field); } // If field is not valid for this (non-custom) type, return empty string if (!Zotero_ItemTypes::isCustomType($this->itemTypeID) && !Zotero_ItemFields::isCustomField($fieldID) && !array_key_exists($fieldID, $this->itemData)) { $msg = "Field '$field' doesn't exist for item $this->id of type {$this->itemTypeID}"; if (!$skipValidation) { throw new Exception($msg); } Z_Core::debug($msg . " -- returning ''", 4); return ''; } if ($this->id && is_null($this->itemData[$fieldID]) && !$this->loaded['itemData']) { $this->loadItemData(); } $value = $this->itemData[$fieldID] !== false ? $this->itemData[$fieldID] : ''; if (!$unformatted) { // Multipart date fields if (Zotero_ItemFields::isFieldOfBase($fieldID, 'date')) { $value = Zotero_Date::multipartToStr($value); } } //Z_Core::debug("Returning '$value' for field $field", 4); return $value; }