Php Joomla/JomSocial的随机化身插件-如何诊断和修复?

Php Joomla/JomSocial的随机化身插件-如何诊断和修复?,php,joomla2.5,joomla-extensions,jomsocial,Php,Joomla2.5,Joomla Extensions,Jomsocial,这方面我还不太熟悉,但我想学 我有一个GPL插件(用于Joomla 1.6/JomSocial 2.6),我想使用它(w/Joomla 2.5和JomSocial 2.8),但它需要一些修复或更新。它应该检查一个默认的化身,并用一个随机的代替它。它已安装,但无法工作 我如何验证它是否获得了所需的数据 我认为一个问题可能是数据库中没有列出默认文件。看起来这个插件希望有一个 function onUserLogin($user, $options) { $juser = CFactory::

这方面我还不太熟悉,但我想学

我有一个GPL插件(用于Joomla 1.6/JomSocial 2.6),我想使用它(w/Joomla 2.5和JomSocial 2.8),但它需要一些修复或更新。它应该检查一个默认的化身,并用一个随机的代替它。它已安装,但无法工作

  • 我如何验证它是否获得了所需的数据

  • 我认为一个问题可能是数据库中没有列出默认文件。看起来这个插件希望有一个

    function onUserLogin($user, $options)
    {
        $juser = CFactory::getUser($user);
        $curavatar = $juser->getThumbAvatar();
    
        $gender = $juser->getInfo($this->params->get( 'genderfield' , 'FIELD_GENDER' ));
    
        if($this->compareEnd("default.jpg", $curavatar) || $this->compareEnd("user.png", $curavatar) || ($this->contains('minisocialgender_images',$curavatar) && $this->params->get( 'reassign' , '0' )))
        {
    
  • 剧本只有大约100行,所以我希望有人能指出一些明显的问题

    感谢您的关注和帮助。下面是脚本的其余部分

    // no direct access
    
    defined('_JEXEC') or die('Restricted access');
    
    jimport( 'joomla.plugin.plugin' );
    
    require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php');
    
    class plgUserMiniSocialGender extends JPlugin
    {
    
    function plgUserMiniSocialGender(& $subject, $config)
    {
        parent::__construct($subject, $config);
    }
    
    //function onLoginUser($user, $options)
    function onUserLogin($user, $options)
    {
        //$juser = $this->getJomSocialUser($user);
        $juser = CFactory::getUser($userid);
    
        //$curavatar = $juser->getAvatar();
        $curavatar = $juser->getThumbAvatar();
    
        $gender = $juser->getInfo($this->params->get( 'genderfield' , 'FIELD_GENDER' ));
        //$gender = $user->getInfo('FIELD_GENDER');
    
        if($this->compareEnd("default.jpg", $curavatar) || $this->compareEnd("user.png", $curavatar) || ($this->contains('minisocialgender_images',$curavatar) && $this->params->get( 'reassign' , '0' )))
        {
            if($gender)
            {
                $maleurl = JPATH_SITE . DS . 'plugins' . DS . 'user' . DS . 'minisocialgender' .DS . 'minisocialgender_images' . DS . 'male' . DS;
                $femaleurl = JPATH_SITE . DS . 'plugins' . DS . 'user' . DS . 'minisocialgender' .DS . 'minisocialgender_images' . DS . 'female' . DS;
    
                $usermodel =& CFactory::getModel('user');
    
                if($this->params->get( 'maletype' , 'Male' ) == $gender)
                {
                    if($this->contains("male", $curavatar))
                        return;
                }
    
                if($this->params->get( 'femaletype' , 'Female' ) == $gender)
                {
                    if($this->contains("female", $curavatar))
                        return;
                }
    
                if($gender == $this->params->get( 'maletype' , 'Male' ))
                {
                    $files = $this->getDirItems($maleurl);
                    $random =   rand ( 0 , (count( $files) - 1));
    
                    JFile::copy($maleurl . $files[$random], JPATH_SITE . DS . 'plugins' . DS . 'user' . DS .'minisocialgender' .DS . 'minisocialgender_images' . DS . $juser->id . 'male' . '.png');
                    JFile::copy($maleurl . 'thumb' . DS .$files[$random], JPATH_SITE . DS . 'plugins' . DS . 'user' . DS . 'minisocialgender' .DS . 'minisocialgender_images' . DS . 'thumb' . $juser->id . 'male' . '.png');
    
                    $usermodel->setImage($juser->id, 'plugins' . DS . 'user' . DS . 'minisocialgender' .DS . 'minisocialgender_images' . DS . $juser->id . 'male' . '.png', 'avatar');
                    $usermodel->setImage($juser->id, 'plugins' . DS . 'user' . DS . 'minisocialgender' .DS . 'minisocialgender_images' . DS . 'thumb'  . $juser->id . 'male' . '.png', 'thumb');
                }
                elseif($gender == $this->params->get( 'femaletype' , 'Female' ))
                {
                    $files = $this->getDirItems($femaleurl);
                    $random= rand ( 0 , (count( $files) - 1) );
    
                    JFile::copy($femaleurl . $files[$random], JPATH_SITE . DS . 'plugins' . DS . 'user' . DS . 'minisocialgender' .DS . 'minisocialgender_images' . DS . $juser->id . 'female' . '.png');
                    JFile::copy($femaleurl . 'thumb' . DS . $files[$random], JPATH_SITE . DS . 'plugins' . DS . 'minisocialgender' .DS . 'user' . DS . 'minisocialgender_images' . DS . 'thumb' . $juser->id . 'female' . '.png');
    
                    $usermodel->setImage($juser->id,  'plugins' . DS . 'user' . DS . 'minisocialgender' .DS . 'minisocialgender_images' . DS . $juser->id . 'female' . '.png', 'avatar');
                    $usermodel->setImage($juser->id,  'plugins' . DS . 'user' . DS . 'minisocialgender' .DS . 'minisocialgender_images' . DS . 'thumb' . $juser->id . 'female' . '.png', 'thumb');
                }
    
                if($this->params->get( 'warnuser' , 1 ))
                {
                    JFactory::getApplication()->enqueueMessage( $this->params->get( 'warnmessage' ));
                }
            }
        }
    }
    
    function getDirItems($dir)
    {
        $files = array();
        if (is_dir($dir)) {
            if ($dh = opendir($dir)) {
                while (($file = readdir($dh)) !== false) {
                    if(filetype($dir . $file) == "file")
                    {
                        $files[] = $file;
                    }
                }
                closedir($dh);
            }
        }
        return $files;
    }
    
    function compareEnd($end, $fullstring)
    {
        $StrLen = strlen($end);
        $FullStrEnd = substr($fullstring, strlen($fullstring) - $StrLen);
        return ($end == $FullStrEnd);
    }
    
    function contains($needle, $haystack)
    {
        $pos = strpos($haystack,$needle);
        if($pos)
        return true;
        else
        return false;
    }
    
    //function getJomSocialUser($user)
    //{
    //  $user2 =& JFactory::getUser();
    //  $userid = $user2->id;
    //  return CFactory::getUser($userid);
    //}
    }