Bug #2766 » cb.core.patch
components/com_comprofiler/plugin/user/plug_cbcore/cb.core.php | ||
---|---|---|
case 'upload':
|
||
$value = ( isset( $_FILES[$col_file] ) ? $_FILES[$col_file] : null );
|
||
|
||
if ( $this->validate( $field, $user, $choice, $value, $postdata, $reason ) ) {
|
||
$_PLUGINS->loadPluginGroup( 'user' );
|
||
|
||
$isModerator = isModerator( $_CB_framework->myId() );
|
||
|
||
$_PLUGINS->trigger( 'onBeforeUserAvatarUpdate', array( &$user, &$user, $isModerator, &$value['tmp_name'] ) );
|
||
if ( $_PLUGINS->is_errors() ) {
|
||
$this->_setErrorMSG( $_PLUGINS->getErrorMSG() );
|
||
}
|
||
$imgToolBox = new imgToolBox();
|
||
$imgToolBox->_conversiontype = $ueConfig['conversiontype'];
|
||
$imgToolBox->_IM_path = $ueConfig['im_path'];
|
||
$imgToolBox->_NETPBM_path = $ueConfig['netpbm_path'];
|
||
$imgToolBox->_maxsize = $this->_getImageFieldParam( $field, 'avatarSize' );
|
||
$imgToolBox->_maxwidth = $this->_getImageFieldParam( $field, 'avatarWidth' );
|
||
$imgToolBox->_maxheight = $this->_getImageFieldParam( $field, 'avatarHeight' );
|
||
$imgToolBox->_thumbwidth = $this->_getImageFieldParam( $field, 'thumbWidth' );
|
||
$imgToolBox->_thumbheight = $this->_getImageFieldParam( $field, 'thumbHeight' );
|
||
$imgToolBox->_debug = 0;
|
||
|
||
$allwaysResize = ( isset( $ueConfig['avatarResizeAlways'] ) ? $ueConfig['avatarResizeAlways'] : 1 );
|
||
|
||
$fileNameInDir = ( $col == 'avatar' ? '' : $col . '_' ) . uniqid( $user->id . '_' );
|
||
$newFileName = $imgToolBox->processImage( $value, $fileNameInDir, $_CB_framework->getCfg( 'absolute_path' ) . '/images/comprofiler/', 0, 0, 1, $allwaysResize );
|
||
if ( ! $newFileName ) {
|
||
$this->_setValidationError( $field, $user, $reason, $imgToolBox->_errMSG ); // needed if uploaded file fails in imgToolbox
|
||
//BB: maybe this needed instead ? :
|
||
// $this->_setErrorMSG( $imgToolBox->_errMSG );
|
||
return;
|
||
}
|
||
|
||
if ( isset( $user->$col ) && ! ( ( $col == 'avatar' ) && ( $ueConfig['avatarUploadApproval'] == 1 ) && ( $isModerator == 0 ) ) ) {
|
||
// if auto-approved: //TBD: else need to log update on image approval !
|
||
$this->_logFieldUpdate( $field, $user, $reason, $user->$col, $newFileName );
|
||
}
|
||
|
||
if ( isset( $user->$col ) && ( $user->$col != '' ) ) {
|
||
deleteAvatar( $user->$col );
|
||
}
|
||
|
||
if ( ( $col == 'avatar' ) && ( $ueConfig['avatarUploadApproval'] == 1 ) && ( $isModerator == 0 ) ) {
|
||
$cbNotification = new cbNotification();
|
||
$cbNotification->sendToModerators( _UE_IMAGE_ADMIN_SUB, _UE_IMAGE_ADMIN_MSG );
|
||
|
||
$user->$col = $newFileName;
|
||
$user->$colapproved = 0;
|
||
} else {
|
||
$user->$col = $newFileName;
|
||
$user->$colapproved = 1;
|
||
}
|
||
|
||
$_PLUGINS->trigger( 'onAfterUserAvatarUpdate', array( &$user, &$user, $isModerator, $newFileName ) );
|
||
}
|
||
// Image is uploaded in the commit, but lets validate it here as well:
|
||
$this->validate( $field, $user, $choice, $value, $postdata, $reason );
|
||
break;
|
||
case 'gallery':
|
||
$newAvatar = stripslashes( cbGetParam( $postdata, $col_gallery ) );
|
||
... | ... | |
}
|
||
|
||
/**
|
||
* Mutator:
|
||
* Prepares field data commit
|
||
* Override
|
||
*
|
||
* @param moscomprofilerFields $field
|
||
* @param moscomprofilerUser $user RETURNED populated: touch only variables related to saving this field (also when not validating for showing re-edit)
|
||
* @param array $postdata Typically $_POST (but not necessarily), filtering required.
|
||
* @param string $reason 'edit' for save user edit, 'register' for save registration
|
||
*/
|
||
function commitFieldDataSave( &$field, &$user, &$postdata, $reason ) {
|
||
global $_CB_framework, $ueConfig, $_PLUGINS, $_FILES;
|
||
|
||
$col = $field->name;
|
||
$colapproved = $col . 'approved';
|
||
$col_choice = $col . '__choice';
|
||
$col_file = $col . '__file';
|
||
|
||
$choice = stripslashes( cbGetParam( $postdata, $col_choice ) );
|
||
|
||
switch ( $choice ) {
|
||
case 'upload':
|
||
$value = ( isset( $_FILES[$col_file] ) ? $_FILES[$col_file] : null );
|
||
|
||
if ( $this->validate( $field, $user, $choice, $value, $postdata, $reason ) ) {
|
||
$_PLUGINS->loadPluginGroup( 'user' );
|
||
|
||
$isModerator = isModerator( $_CB_framework->myId() );
|
||
|
||
$_PLUGINS->trigger( 'onBeforeUserAvatarUpdate', array( &$user, &$user, $isModerator, &$value['tmp_name'] ) );
|
||
if ( $_PLUGINS->is_errors() ) {
|
||
$this->_setErrorMSG( $_PLUGINS->getErrorMSG() );
|
||
}
|
||
$imgToolBox = new imgToolBox();
|
||
$imgToolBox->_conversiontype = $ueConfig['conversiontype'];
|
||
$imgToolBox->_IM_path = $ueConfig['im_path'];
|
||
$imgToolBox->_NETPBM_path = $ueConfig['netpbm_path'];
|
||
$imgToolBox->_maxsize = $this->_getImageFieldParam( $field, 'avatarSize' );
|
||
$imgToolBox->_maxwidth = $this->_getImageFieldParam( $field, 'avatarWidth' );
|
||
$imgToolBox->_maxheight = $this->_getImageFieldParam( $field, 'avatarHeight' );
|
||
$imgToolBox->_thumbwidth = $this->_getImageFieldParam( $field, 'thumbWidth' );
|
||
$imgToolBox->_thumbheight = $this->_getImageFieldParam( $field, 'thumbHeight' );
|
||
$imgToolBox->_debug = 0;
|
||
|
||
$allwaysResize = ( isset( $ueConfig['avatarResizeAlways'] ) ? $ueConfig['avatarResizeAlways'] : 1 );
|
||
|
||
$fileNameInDir = ( $col == 'avatar' ? '' : $col . '_' ) . uniqid( $user->id . '_' );
|
||
$newFileName = $imgToolBox->processImage( $value, $fileNameInDir, $_CB_framework->getCfg( 'absolute_path' ) . '/images/comprofiler/', 0, 0, 1, $allwaysResize );
|
||
if ( ! $newFileName ) {
|
||
$this->_setValidationError( $field, $user, $reason, $imgToolBox->_errMSG ); // needed if uploaded file fails in imgToolbox
|
||
//BB: maybe this needed instead ? :
|
||
// $this->_setErrorMSG( $imgToolBox->_errMSG );
|
||
return;
|
||
}
|
||
|
||
if ( isset( $user->$col ) && ! ( ( $col == 'avatar' ) && ( $ueConfig['avatarUploadApproval'] == 1 ) && ( $isModerator == 0 ) ) ) {
|
||
// if auto-approved: //TBD: else need to log update on image approval !
|
||
$this->_logFieldUpdate( $field, $user, $reason, $user->$col, $newFileName );
|
||
}
|
||
|
||
if ( isset( $user->$col ) && ( $user->$col != '' ) ) {
|
||
deleteAvatar( $user->$col );
|
||
}
|
||
|
||
if ( ( $col == 'avatar' ) && ( $ueConfig['avatarUploadApproval'] == 1 ) && ( $isModerator == 0 ) ) {
|
||
$cbNotification = new cbNotification();
|
||
$cbNotification->sendToModerators( _UE_IMAGE_ADMIN_SUB, _UE_IMAGE_ADMIN_MSG );
|
||
|
||
$user->$col = $newFileName;
|
||
$user->$colapproved = 0;
|
||
} else {
|
||
$user->$col = $newFileName;
|
||
$user->$colapproved = 1;
|
||
}
|
||
|
||
$_PLUGINS->trigger( 'onAfterUserAvatarUpdate', array( &$user, &$user, $isModerator, $newFileName ) );
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Mutator:
|
||
* Prepares field data rollback
|
||
* Override
|
||
*
|
||
* @param moscomprofilerFields $field
|
||
* @param moscomprofilerUser $user RETURNED populated: touch only variables related to saving this field (also when not validating for showing re-edit)
|
||
* @param array $postdata Typically $_POST (but not necessarily), filtering required.
|
||
* @param string $reason 'edit' for save user edit, 'register' for save registration
|
||
*/
|
||
function rollbackFieldDataSave( &$field, &$user, &$postdata, $reason ) {
|
||
global $_CB_framework, $ueConfig, $_PLUGINS, $_FILES;
|
||
|
||
$col = $field->name;
|
||
$colapproved = $col . 'approved';
|
||
$col_choice = $col . '__choice';
|
||
$col_file = $col . '__file';
|
||
|
||
$choice = stripslashes( cbGetParam( $postdata, $col_choice ) );
|
||
|
||
switch ( $choice ) {
|
||
case 'upload':
|
||
$value = ( isset( $_FILES[$col_file] ) ? $_FILES[$col_file] : null );
|
||
|
||
if ( $this->validate( $field, $user, $choice, $value, $postdata, $reason ) ) {
|
||
deleteAvatar( $user->$col );
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Validator:
|
||
* Validates $value for $field->required and other rules
|
||
* Override
|