Admindeletecustomfieldsaction.class.php:
<?php
include_once( PLOG_CLASS_PATH."class/dao/customfields/customfields.class.php" );
include_once( PLOG_CLASS_PATH."class/dao/customfields/customfieldsvalues.class.php" );
include_once( PLOG_CLASS_PATH."class/view/admin/admincustomfieldslistview.class.php" );
include_once( PLOG_CLASS_PATH."class/data/validator/arrayvalidator.class.php" );
/**
* \ingroup Action
* @private
*
* Removes a custom field, and all the values that have been given
* to that field in all posts
*/
class AdminDeleteCustomFieldsAction extends AdminAction
{
var $_fieldIds;
function AdminDeleteCustomFieldsAction( $actionInfo, $request )
{
$this->AdminAction( $actionInfo, $request );
// data validation, which may vary depending on the parameter
$this->_op = $actionInfo->getActionParamValue();
if( $this->_op == "deleteCustomField" )
$this->registerFieldValidator( "fieldId", new IntegerValidator());
else
$this->registerFieldValidator( "fieldIds", new ArrayValidator());
$view = new AdminCustomFieldsListView( $this->_blogInfo );
$view->setErrorMessage( $this->_locale->tr("error_incorrect_field_id"));
$this->setValidationErrorView( $view );
}
/**
* prepares the data for AdminDeleteCustomFieldsAction::_deleteFields
*/
function perform()
{
if( $this->_op == "deleteCustomField" ) {
$this->_fieldId = $this->_request->getValue( "fieldId" );
$this->_fieldIds = Array();
$this->_fieldIds[] = $this->_fieldId;
}
else
$this->_fieldIds = $this->_request->getValue( "fieldIds" );
$this->_deleteFields();
}
/**
* @private
*/
function _deleteFields()
{
// otherwise, go through all the selected fields and remove them one by one,
// also removing the rows that contain the values
$customFields = new CustomFields();
$errorMessage = "";
$successMessage = "";
$totalOk = 0;
$this->_view = new AdminCustomFieldsListView( $this->_blogInfo );
foreach( $this->_fieldIds as $fieldId ) {
$field = $customFields->getCustomField( $fieldId );
if( $field ) {
// fire the pre-event
$this->notifyEvent( EVENT_PRE_CUSTOM_FIELD_DELETE, Array( "field" => &$field ));
$result = $customFields->removeCustomField( $fieldId );
if( $result ) {
$totalOk++;
if( $totalOk > 1 )
$successMessage = $this->_locale->pr( "fields_deleted_ok", $totalOk );
else
$successMessage = $this->_locale->pr( "field_deleted_ok", $field->getName());
// fire the post-event
$this->notifyEvent( EVENT_POST_CUSTOM_FIELD_DELETE, Array( "field" => &$field ));
}
else
$errorMessage .= $this->_locale->pr( "error_deleting_field", $field->getName())."<br/>";
}
else
$errorMessage .= $this->_locale->pr( "error_deleting_field2", $fieldId )."<br/>";
}
if( $errorMessage != "" ) $this->_view->setErrorMessage( $errorMessage );
if( $successMessage != "" ) $this->_view->setSuccessMessage( $successMessage );
$this->setCommonData();
return true;
}
}
?>
Other Blog Scripts: