TeamToy的SAE版默认新用户是没头像的,页面加载时会报404。在footer里面有一段js脚本会默认将404的头像都刷成u0.gif,不过还是会报404错误。

查看源码,发现根源在 core.function.php 里面:

function get_user_icon( $uid , $type = 'small' )
{
     $s = new SaeStorage();
     
     $user_file = $s->getUrl('user' , 'u' . intval($uid) . '.' . basename( $type ) . '.gif'); 
     $default_file = 'static/data/user/u0.' . basename( $type ) . '.gif';
          return $user_file;
     
     /*
     if( file_exists( $user_fileloc ) )
          return $user_file;
     else
          return $default_file;
   */  
}
 
这里原本有一个判定,但是因为sae一开始不认从storage里面判定 file_exists 或是 is_file 这种写法,所以 @Easy 后来才不得不用了js的方法。
现在,这个判定在SAE中可以执行了!只不过要换个写法。
最终代码参考:
 
function get_user_icon( $uid , $type = 'small' )
{
     $s = new SaeStorage();
     
     $user_file = $s->getUrl('user' , 'u' . intval($uid) . '.' . basename( $type ) . '.gif'); 
     $user_fileloc = 'saestor://user/u' . intval($uid) . '.' . basename( $type ) . '.gif';
     $default_file = 'static/data/user/u0.' . basename( $type ) . '.gif';
          //return $user_file;
     
     if( is_file( $user_fileloc ) )
          return $user_file;
     else
          return $default_file;
     
}
 
参考阅读:SAE应用移植指南