md5; if (is_null($rval)){ $rval = md5(strval($this)); } return $rval; } /** * Forza il valore della variabile interna contenente il checkusm. * ATTENZIONE! I non checksumFake non dovrebbero avere questo attributo valorizzato * @param string $md5 */ public function forceChecksum($md5){ $this->md5 = $md5; } /** * Genera la versione checksumFake di un rapi request details. * @return RAPI_RequestDetails */ public function generateChecksumFake(){ $encObj = parent::generateEncryptionObject(); $tmp = new stdClass(); if (sizeof(static::getArgumentList())>0){ foreach (static::getArgumentList() as $arg){ $tmp->$arg = ""; } } $obj = new static($tmp,$encObj->attachments); $obj->md5 = $this->getChecksum(); return $obj; } /** * Restituisce true se si tratta di un checksum fake. * @return boolean */ public function isChecksumFake(){ return !is_null($this->md5); } /* * Metodi propri della classe */ /** * Valuta l'uguaglianza delle request details * NOTA: Funziona anche se un requestDetails è un checksumFake, ma in tal caso confronta solo i due checksum. * @param RAPI_Request $req * @return boolean */ public function isEqual(RAPI_RequestDetails $req){ $rval = ( strcmp($this->getChecksum(), $req->getChecksum())==0 ) ; if (!$this->isChecksumFake() && !$req->isChecksumFake()){ $rval = strcmp($this, $req); } return $rval; } /** * @see RAPI_MessageDetails::generateEncryptionObject() */ public function generateEncryptionObject(){ $tmp = parent::generateEncryptionObject(); $tmp->operation = static::getOperationName(); if ($this->isChecksumFake()){ $tmp->md5 = $this->getChecksum(); } return $tmp; } /* * Factory */ /** * Registra il details alla factory */ public static function registerToFactory(){ RAPI_RequestDetailsFactory::addToRegister(static::getOperationName(), get_called_class()); } /* * Metodi astratti */ /** * Returns true if the operation requires an * operationId (like for writes and deletion) * @return bool */ public static abstract function usesOperationId(); /** * Returns the name of the operation used by the request factory (NOT THE RAPI_Operation !!!!!) * @return string */ public static abstract function getOperationName(); /** * Returns the class name of the response details to use * @return string */ public static abstract function getResponseDetailsClass(); } ?>