original_string: public function save() {
  		if( empty($this->modFields) || $this->isDeleted() ) {
  			return false;
  		}
  		
  		$data = array_filterbykeys($this->data, $this->modFields);
  		if( !$data ) {
  			throw new Exception('No updated data found but there is modified fields, unable to update');
  		}
  		$operation = $this->getUpdateOperation($data, $this->modFields);
  		// Do not validate, new data are invalid due to the fact the new data are already in object
  		// 		$operation->validate();
  		$r = $operation->run();
  		$this->modFields = array();
  		if( !$this->onSavedInProgress ) {
  			// Protect script against saving loops
  			$this->onSavedInProgress = true;
  			static::onSaved($data, $this);
  			$this->onSavedInProgress = false;
  		}
  		return $r;
  	}
code: public function save() {
  		if( empty($this->modFields) || $this->isDeleted() ) {
  			return false;
  		}
  		
  		$data = array_filterbykeys($this->data, $this->modFields);
  		if( !$data ) {
  			throw new Exception('No updated data found but there is modified fields, unable to update');
  		}
  		$operation = $this->getUpdateOperation($data, $this->modFields);
  		// Do not validate, new data are invalid due to the fact the new data are already in object
  		// 		$operation->validate();
  		$r = $operation->run();
  		$this->modFields = array();
  		if( !$this->onSavedInProgress ) {
  			// Protect script against saving loops
  			$this->onSavedInProgress = true;
  			static::onSaved($data, $this);
  			$this->onSavedInProgress = false;
  		}
  		return $r;
  	}
code_tokens: public function save ( ) { if ( empty ( $ this -> modFields ) || $ this -> isDeleted ( ) ) { return false ; } $ data = array_filterbykeys ( $ this -> data , $ this -> modFields ) ; if ( ! $ data ) { throw new Exception ( 'No updated data found but there is modified fields, unable to update' ) ; } $ operation = $ this -> getUpdateOperation ( $ data , $ this -> modFields ) ; // Do not validate, new data are invalid due to the fact the new data are already in object // 		$operation->validate(); $ r = $ operation -> run ( ) ; $ this -> modFields = array ( ) ; if ( ! $ this -> onSavedInProgress ) { // Protect script against saving loops $ this -> onSavedInProgress = true ; static :: onSaved ( $ data , $ this ) ; $ this -> onSavedInProgress = false ; } return $ r ; }
docstring: Save this permanent object
  
  @return bool|int True in case of success
  @throws Exception
  
  If some fields was modified, it saves these fields using the SQL Adapter.
docstring_tokens: Save this permanent object