پارس جوم ::  انجمن های تخصصی جوملا
تبدیل کدهای جوملا 1.5 به جوملا 3 - نسخه‌ی قابل چاپ

+- پارس جوم :: انجمن های تخصصی جوملا (https://forums.parsjoom.ir)
+-- انجمن: پشتیبانی (/forum-70.html)
+--- انجمن: مباحث و مشکلات عمومی (/forum-33.html)
+--- موضوع: تبدیل کدهای جوملا 1.5 به جوملا 3 (/thread-17411.html)



تبدیل کدهای جوملا 1.5 به جوملا 3 - saso - ۹-۱۲-۱۳۹۳ ۱۱:۱۳ عصر

با سلام
من تو تبدیل این کد پلاگینJoomla 1.5 به joomla 3.0 موندم لطفاً کمک کنید
کد:
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

if (!function_exists('randomkeys')) {
    function randomkeys($length) {
        $key = '';
        $pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        for($i = 0; $i < $length; $i++)    {
            $key .= $pattern{rand(0,strlen($pattern)-1)};
        }
        return $key;
    }
}

jimport('joomla.event.plugin');

class plgContentSIS extends JPlugin {
    
    private $image_dir = 'images/stories';
    private $uid;
    private $sis_dir = 'plugins/content/sis';
    private $width, $height;
    
    function plgContentSIS(&$subject) {
        parent::__construct($subject);
    }
        //$mainframe->registerEvent( 'onPrepareContent', 'plgContentPHPinc' );
    function onPrepareContent(&$row, &$params, $page=0)    {
        if ( JString::strpos($row->text, '{sis}') === false) {
            return true;
        }
        // Get plugin info
        $plugin =& JPluginHelper::getPlugin('content', 'sis');
        $pluginParams = new JParameter( $plugin->params );
        $image_dir = $pluginParams->get('image_dir');
        if (isset($image_dir{0})) {
            $this->image_dir = $image_dir;
        }
        $jquery_loaded = $pluginParams->get('jquery_loaded');
        $doc =& JFactory::getDocument();
        if ($jquery_loaded == 0) {
            $doc->addScript('plugins/content/sis/jquery-1.4.2.min.js');
        }
        $doc->addScript('plugins/content/sis/jquery.tools.min.js');
        //$regex = '/{sis (.*?)(\s+(.*?))?}/i';
        $regex = '@{sis}(.*?){/sis}@i';
        $row->text = preg_replace_callback($regex, array($this,'replaceSIS'), $row->text);
    }

    function replaceSIS($matches) {
        $this->uid = randomkeys(16);
        $folder = $this->image_dir.'/'.$matches[1];
        if (file_exists($folder)) {
            $files = glob("$folder/*.jpg");
            if (count($files) > 0) {
                $html = $this->getHTML($files);
                $doc =& JFactory::getDocument();
                $doc->addStyleDeclaration($this->getCSS($this->width, $this->height));
                $doc->addScriptDeclaration($this->getJS());
                return $html;
            } else {
                return '<p>No images found!</p>';
            }
        } else {
            return '<p>Folder not found!</p>';
        }
    }
    
    function getHTML($files) {
        $imgsize = getimagesize($files[0]);
        $this->width = $imgsize[0];
        $this->height = $imgsize[1];
        $html = '
<div class="'.$this->uid.'">
    <div class="scrollable">
        <div class="items">';
        foreach ($files as $file) {
            $alt = substr($file, strrpos($file, '/') + 1);
            $html .= '<div class="sis-image"><img width="'.$this->width.'" height="'.$this->height.'" src="'.$file.'" alt="'.$alt.'" /></div>';
        }
        $html .= '</div>
    </div>
    <a href="javascript:;" class="prev"></a>
    <a href="javascript:;" class="next"></a>
</div>';
        return $html;
    }
    
    function getCSS($width, $height) {
        $half_width = floor($width/2);
        $css = "
div.$this->uid a, div.$this->uid a:focus, div.$this->uid a:active {outline:none; border:0;}
div.$this->uid {position:relative;}
div.$this->uid a.prev:hover {background:url('{$this->sis_dir}/prev-active.png') no-repeat 5% 50%;}
div.$this->uid a.prev, div.$this->uid a.prev.disabled {display:block;width:{$half_width}px;height:{$height}px;position:absolute;top:0;​left:0;background:url('{$this->sis_dir}/prev.png') no-repeat 5% 50%;}
div.$this->uid a.next:hover {background:url('{$this->sis_dir}/next-active.png') no-repeat 95% 50%;}
div.$this->uid a.next, div.$this->uid a.next.disabled {display:block;width:{$half_width}px;height:{$height}px;position:absolute;top:0;​left:{$half_width}px;background:url('{$this->sis_dir}/next.png') no-repeat 95% 50%;}
div.$this->uid div.scrollable {width:{$width}px;height:{$height}px;overflow:hidden;position:relative;}
div.$this->uid div.scrollable div.items {width:20000em;position:absolute;}
div.$this->uid div.scrollable div.items div {float:left;}";        
        return $css;
    }
    
    function getJS() {
        $plugin =& JPluginHelper::getPlugin('content', 'sis');
        $pluginParams = new JParameter( $plugin->params );
        $use_keyboard = $pluginParams->get('use_keyboard');
        $use_keyboard = ($use_keyboard == 0)?"keyboard:0,":"";
        $transition = $pluginParams->get('transition');
        $transition = ($transition != '')?"speed:$transition,":"";
        $circular = $pluginParams->get('circular');
        $circular = ($circular == 1)?"circular:1,":"";
        $js = "
(function($) {
    $(document).ready(function() {
        $('div.$this->uid div.scrollable').scrollable({
            $use_keyboard $transition $circular    size:1
        });
    });
})(jQuery);";
        return $js;
    }
}