function perform(&$request, &$response)
	{
		$request->set_status(REQUEST_STATUS_SUCCESS);
		
		if($request->has_attribute('popup'))
			$response->write(close_popup_response($request));
	
		if(!$object = wrap_with_site_object(fetch_requested_object()))
  		return;
		
		$site_object_controller =& $object->get_controller();
		$action = $site_object_controller->determine_action($request);

		switch ($action)
		{
			case 'publish':
				$status = $this->get_publish_status($object);
			break;
			case 'unpublish':
				$status = $this->get_unpublish_status($object);
			break;
			default:
				return ;
			break;
		}

		$object->set_attribute('status', $status);
		$object->update(false);
		
		$this->_apply_access_policy($object, $action);

	  fetcher :: flush_cache();
	}
 function _valid_perform(&$request, &$response)
 {
     $object_data =& $this->_load_object_data();
     $data_to_import['id'] = $object_data['id'];
     $data_to_import['node_id'] = $object_data['node_id'];
     $data_to_import['parent_node_id'] = $object_data['parent_node_id'];
     $data_to_import['identifier'] = $object_data['identifier'];
     $data_to_import['title'] = $object_data['title'];
     $this->_valid_perform_prepare_data($data_to_import);
     if (!isset($data_to_import['status'])) {
         $data_to_import['status'] = $object_data['status'];
     }
     $this->object->import_attributes($data_to_import);
     if (!$this->_update_object_operation()) {
         $request->set_status(REQUEST_STATUS_FAILURE);
         return;
     }
     $this->indexer->add($this->object);
     if (isset($data_to_import['identifier']) && $object_data['identifier'] != $data_to_import['identifier']) {
         $this->_handle_changed_identifier($data_to_import['identifier']);
     }
     $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);
     fetcher::flush_cache();
 }