জুমলা সংস্করণটি কীভাবে পাবেন?


11

আমি একটি সমাধানের স্ক্রিনশটগুলি দেখেছি, সেখানে জুমলা সংস্করণটি কেবলমাত্র HTTP এর মাধ্যমে পৃষ্ঠাটি অ্যাক্সেস করে সনাক্ত করা হচ্ছে।

উদাহরণস্বরূপ সমাধানটি জুমলার সংস্করণের সমস্ত 3 ডিজিট প্রদর্শিত হয়েছিল। উদাহরণস্বরূপ ২.২.২৮ বা 1.0.x এবং ঠিক তেহই কেবলমাত্র http এর মাধ্যমে ওয়েবপৃষ্ঠায় অ্যাক্সেস করে।

আমি একটি ছোট অ্যাপ্লিকেশন তৈরি করতে চাই যা সার্ভারে ইনস্টল হওয়া সংস্করণ সম্পর্কে অবহিত হতে পারে। যেহেতু আমার কাছে সর্বদা এফটিপি স্টোরেজটিতে সম্পূর্ণ অ্যাক্সেস নেই, তাই আমি কীভাবে একটি সহজ এইচটিটিপি জিইটি থেকে জুমলা সংস্করণটি বের করতে পারি তা জানতে চাই।


আপনি কি আপনার নিজস্ব ওয়েবসাইট বা একটি বাহ্যিক ওয়েবসাইটের উল্লেখ করছেন? যদি বাহ্যিক হয়, তবে এটি করা যাবে না
লড্ডার


@ ফারাহমান্ড - প্রদত্ত লিঙ্কগুলি হ'ল সংস্করণ যেমন 2.5.28 এর জন্য কোনও সহায়ক হবে না । 1.5 এবং 2.5
লড্ডার

@ লড্ডার - দয়া করে এই লিঙ্কটি পরীক্ষা করুন: হোয়াইটফিরডিজাইন.com / tools / joomla- version- check.html যা সঠিক সংস্করণ দেখায়।
ফারহমানদ

@ লোডার - আমি লিঙ্কটি পরীক্ষা করেছি এবং এটি জুমলা ২.৫ সংস্করণের জন্য কাজ করে তবে কিছু জুমলা ৩ সংস্করণে কাজ করে না।
ফারহমানদ

উত্তর:


15

ঠিক আছে তাই এই আমি গতকাল লিখছিলাম।

জুমলার জন্য কেবল 2.5 এবং 3.x

  1. উপস্থাপনাটি http://URL থেকে অনুপস্থিত কিনা তা পরীক্ষা করুন । যদি এটি হয়, তবে এটি এটি যুক্ত করে। লক্ষ্য করুন এই ক্ষেত্রে আমি আছে না নেয়া https://বিবেচনা।
  2. এরপরে এটি জুমলা ম্যানিফেস্ট ফাইলটি পাওয়ার চেষ্টা করে এবং উপস্থিত / পঠনযোগ্য কিনা তা পরীক্ষা করে।
  3. যদি এটি বিদ্যমান থাকে তবে <version>ট্যাগ থেকে মানটি পায় ।
  4. যদি এক্সএমএল ফাইলটি পাঠযোগ্য না হয় তবে আমি টিনিএমসিই সংস্করণটি পেতে ফ্যালব্যাক লিখেছি। আবার, এটি <version>ট্যাগ থেকে মানটি পড়ার চেষ্টা করবে ।
  5. এখান থেকে, প্রতিটি জুমলা সংস্করণের জন্য টিনিএমসিই আপডেট রয়েছে কিনা তা দেখার জন্য আমি বেশ দীর্ঘ সময় অতিবাহিত করেছি quite যা তারা করেছে, আমি কোডটিতে switchব্লকের সাথে যুক্ত হয়েছি । এই পদ্ধতির মধ্যে 2 টি বাদ দিয়ে সঠিক সংস্করণটি দেওয়া হবে না, তবে এটি গড় দেবে। আমি jQuery সংস্করণ সনাক্ত করার কথা ভাবছিলাম কিন্তু তখন বুঝতে পেরেছিলাম যে প্রচুর লোক মূল সংস্করণটিকে সর্বশেষে আপডেট করে যা ফলাফলগুলি ভুল করে তোলে।
  6. যদি টিনিএমসিই সংস্করণটি খুঁজে পাওয়া যায় না (সুতরাং মূলত একটি নন-জুমলা সাইট), তবে ফাংশনটি ফিরে আসবে Unknown

দ্রষ্টব্য: এই স্ক্রিপ্টটি এটি ব্যবহার করে CURLযাতে এটি আপনার সার্ভারে সক্ষম হয়েছে তা নিশ্চিত হন।


class JoomlaVersions
{
    public function getJoomlaVersion($site)
    {
        // Add http prefix if missing
        if (strpos($site,'http://') === false)
        {
            $site = 'http://'.$site;
        }

        // Get the number value from the <version> tag in the XML file
        $dom = new DOMDocument;
        $url = $site . '/administrator/manifests/files/joomla.xml';
        libxml_use_internal_errors(true);

        $exists = $this->XMLexists($url);

        if( $exists )
        {
            $dom->load($url);
            $versions = $dom->getElementsByTagName('version');

            foreach ($versions as $version) 
            {
                return $version->nodeValue;
            }
        }
        else 
        {
            $mce = $this->getTinyMCEversion($site);

            if($mce)
            {
                // Base Joomla version on the TinyMCE version
                switch ($mce)
                {
                    case '3.5.6':
                        $joomla = '3.0.0 - 3.1.6';
                        break;
                    case '4.0.10':
                        $joomla = '3.2.0 - 3.2.1';
                        break;
                    case '4.0.12':
                        $joomla = '3.2.2';
                        break;
                    case '4.0.18':
                        $joomla = '3.2.3 - 3.2.4';
                        break;
                    case '4.0.22':
                        $joomla = '3.3.0';
                        break;
                    case '4.0.28':
                        $joomla = '3.3.1 - 3.3.6';
                        break; 
                    case '4.1.7':
                        $joomla = '3.4.0';
                        break; 
                    default:
                        $joomla = '3.x';
                }

                return $joomla;
            }
            else 
            {
                return 'Unknown';
            }
        }   
    }

    // Get TinyMCE Version 
    private function getTinyMCEversion($site)
    {
        $tinymce = $site . '/plugins/editors/tinymce/tinymce.xml';      
        libxml_use_internal_errors(true);

        $exists = $this->XMLexists($tinymce);

        if( $exists )
        {
            $dom->load($tinymce);
            $vTag = $dom->getElementsByTagName('version');

            foreach ($vTag as $tag) 
            {
                return $tag->nodeValue;
            }
        }
    }

    // Check file exists using CURL
    private function XMLexists($url)
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_NOBODY, true);
        curl_exec($ch);
        $getinfo = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        return $getinfo;
    }

}

তারপরে ফাংশনটি কল করুন:

$version = new JoomlaVersions;
echo $version->getJoomlaVersion('http://joomla.org');

আমি অন্য ব্যবহারকারীদের জন্য একটি সরঞ্জাম হিসাবে আমার ওয়েবসাইটে একটি মডিউল তৈরি করেছি:

জুমলা সংস্করণ সনাক্তকরণ সরঞ্জাম

আপনি যদি কাঁটাচামচ করতে বা টানতে অনুরোধ জমা দিতে চান তবে আমি একটি গিথুব সংগ্রহস্থলও তৈরি করেছি:

জুমলা সংস্করণ গিথুব রেপো সনাক্ত করুন

যাইহোক, আপনারা কেউ কেউ জানেন, আমি ব্যাকএন্ড বিকাশকারী নই তাই সম্ভবত কোডে কিছু উন্নতি হতে পারে। আপনার যদি অন্য কোনও সমাধান থাকে বা আমার বর্তমানে যা আছে তা আপডেট করতে পারলে এটি একটি নতুন উত্তর হিসাবে পোস্ট করতে ভুলবেন না।


দুর্দান্ত সমাধান! যাইহোক এটি সূচিত করে যে আপনার কাছে / প্রশাসক / ম্যানিফেস্ট / ফাইলস / জুমলা.এক্সএমএল ফাইল অ্যাক্সেস রয়েছে। সুতরাং এটি সবসময় হয় না। অন্য উল্লিখিত পৃষ্ঠায় একটি সমাধান রয়েছে, যা কেবলমাত্র / পৃষ্ঠার জিইটি-র সংস্করণটি সনাক্ত করে। সুতরাং এটি কীভাবে করা হয় তা সম্পূর্ণ অস্পষ্ট। অ্যাপাচি লগগুলি কেবলমাত্র ডোমেন / এ ডোমেনের জন্য একটি সহজ পেতে বলে, আরও কিছু না nothing
hkais

1
আমি উত্তরে একটি গিথুব সংগ্রহস্থল লিঙ্ক যুক্ত করেছি।
লড্ডার


@ জুমজঙ্ক আমি বেশ কয়েকটি জুমলা সাইট চেক করতে আপনার সাইটে স্ক্রিপ্টটি চেষ্টা করেছি। কাজ করছে না. প্রতিক্রিয়া খালি।

@ মার্ক - কিছু সাইটগুলি কাজ করে, অন্যরা হোস্টের জন্য নির্দিষ্ট এক্সএমএল ফাইলগুলির জন্য পড়ার অনুমতিগুলি মঞ্জুরি দেয় না এর ফলে এটি হবে না যে আমার সংস্করণ সনাক্তকরণ কীভাবে কাজ করে। সংস্করণ সনাক্তকরণের জন্য বিভিন্ন পদ্ধতি ব্যবহার করে এমন একটি অন্য সাইট রয়েছে, তবে তারা এটি কী করে তা সম্পর্কে আমি নিশ্চিত নই। যদি আমি এটি করার আরও উপযুক্ত উপায় বের করতে পারি তবে আমি এটি বাস্তবায়ন করব।
লডার

3

আপনি যদি পরিচালনা করেন এমন সাইটগুলির সংস্করণগুলিতে যদি আপনি আগ্রহী হন তবে আপনি একটি ছোট প্লাগইন তৈরি এবং ইনস্টল করতে পারেন যা প্লাগইন ইউআরএল খোলার মাধ্যমে জুমলা সংস্করণটি ভাগ করে দেয়
http://example.com/plugins/getversion/getversion.php?configuredSecret

  • আমার এখনও এটির প্রয়োজন হয়নি তাই আমার কোড নেই। তবে লডারের উত্তরের ভিত্তিতে আপনি দেখতে পাবেন কিভাবে জুমলা পড়তে হয় ! /administrator/manifests/files/joomla.xmlসংস্করণ নম্বরটি ফেরত দেওয়ার জন্য মেইনফেষ্ট ফাইল ।

বেশিরভাগ নবাবিদের জন্য নোট করুন: configuredSecretকেবল অনুমোদিত অনুরোধগুলিতে সর্বজনীনভাবে দৃশ্যমান চ্যানেলটি ভাগ করে নেওয়ার জন্য শাস্ত্রীয় পদ্ধতির একটি। সংহত সংযোগ রক্ষার জন্য আরও ভাল কোনও উপায় না থাকলে এটি দুটি সিস্টেমে সংযোগের জন্য সাধারণত ব্যবহৃত হয়।


প্রশাসক / বহিঃপ্রকাশ / ফাইল / joomla.xML জুমলার কমপক্ষে 2.5 এর জন্য উত্তর
লিনব

@ লিনব - নিশ্চিত এই ক্ষেত্রে, ওপিতে হালকা ওজনের অ্যাপ্লিকেশন থাকতে চাইবে যা পুরো এক্সএমএল ফাইল নয়, কেবলমাত্র একক সংখ্যা পায়। সুতরাং আপনার সমাধানটি ফ্যাট ক্লায়েন্টের জন্য উপযুক্ত, পাতলা ক্লায়েন্টের জন্য আমার সমাধান for
মিরোক্লাভ

0

আমি এটি একটি পৃথক উত্তর হিসাবে যুক্ত করব, কারণ এটি ঠিক কোনও কোড সমাধান নয়।

আমি একটি ফায়ারফক্স এক্সটেনশন তৈরি করেছি যা 2 টি এক্সএইচআর অনুরোধগুলি সম্পাদন করে। সর্বশেষতম সংস্করণটি পেতে জুমলা এপিআই সাইটের প্রথমটি, অন্যটি আপনি যে joomla.xmlওয়েবসাইটটি দেখছেন তার ফাইলের জন্য। এটি তখন দুটি সংস্করণ এবং console.log()ফলাফলের সাথে তুলনা করবে ।

ইউআরএল: https://github.com/C-Lodder/joomla-update-checker

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.