快毕业了,想给班级做个基于wordpress的博客放在SAE平台,想着大家参与方便,于是下了个buddyrpess插件。
插件装好了在SAE上用着看是没什么问题。试着创建个群组,第二步上传头像的时候问题来了。
图片怎么也裁切不了。点击裁切图片一直提示:There was a problem cropping the avatar.
搜索找到这个提示在bp-groups-screens.php文件里面的652行,bp_core_avatar_handle_crop( $args )函数调用后返回失败。
这个函数在bp-core-avatars.php文件里面,发现这个函数执行到 “if ( !file_exists( $avatar_folder_dir ) )” 这里文件不存在,返回false。直接注释掉,提交代码再次上传,提示图片上传成功。可以刷新页面,头像确实没变。
于是到storage里面检查,文件确实存在。
想想,去主题的模板找头像输出的函数,找到<div id="item-header-avatar">下面的<?php bp_displayed_user_avatar( 'type=full' ); ?>。一路跟着bp_displayed_user_avatar()函数,找到bp-core-avatars.php文件的287行
// Check for directory
if (file_exists( $avatar_folder_dir )) {
// Open directory
if ($av_dir = opendir( $avatar_folder_dir )) {
就是这段的问题了。
做了一下修改。
// Check for directory
if ( /*file_exists( $avatar_folder_dir )*/ true) {
// Open directory
if (/* $av_dir = opendir( $avatar_folder_dir ) */true) {
/*
// Stash files in an array once to check for one that matches
$avatar_files = array();
while ( false !== ( $avatar_file = readdir( $av_dir ) ) ) {
// Only add files to the array (skip directories)
if ( 2 < strlen( $avatar_file ) ) {
$avatar_files[] = $avatar_file;
}
echo '<script type="text/javascript">alert("'.$avatar_file.'");</script>';
}
*/
$storage = new SaeStorage();
$avatar_files = array();
$avatar_folder_dir=str_replace('saestor://wordpress/','',$avatar_folder_dir);
$avatar_files=$storage->getList('wordpress',$avatar_folder_dir);
// Check for array
if ( 0 < count( $avatar_files ) ) {
// Check for current avatar
foreach( $avatar_files as $key => $value ) {
if ( strpos ( $value, $avatar_size )!== false ) {
$temp_avatar_filename=substr($avatar_files[$key],1+strrpos($avatar_files[$key],'/'));
$avatar_url = $avatar_folder_url . '/' . $temp_avatar_filename;
/*echo '<script type="text/javascript">alert("'.$avatar_files[$key].'");</script>';*/
}
}
上传代码,浏览页面,图片显示正常了。