Historical XenForo 1.x source behavior / access to archived XF1 releases

Bilancho

New member
Hello,


I am conducting a technical reproducibility study involving the historical behavior of XenForo 1.x. I am trying to verify one very specific aspect of the original XF1 URL-generation code.


Before purchasing a license, I would appreciate clarification on either of the following:


1. Archived releases


If I purchase a XenForo license today, would my customer account give me legitimate access to archived XenForo 1.x releases, particularly versions from the XF 1.1–1.4 period?


2. Historical XF1 behavior


Alternatively, could a XenForo staff member or developer confirm the historical behavior of:


XenForo_Link::buildIntegerAndTitleUrlComponent()


Specifically, in XenForo 1.x, when the title passed to that function becomes an empty string after URL normalization, did the function fall back to returning only the integer ID?


In other words, I am trying to distinguish between these two cases:


title.ID


versus, when the normalized title is empty:


ID


I am not asking whether an ID-only URL is accepted as an alternative route or redirect. I am specifically trying to establish whether the historical XF1 URL-generation function itself produced the integer-only component in that per-record empty-title case.


I do not need the complete proprietary source code. A confirmation from XenForo staff/development, a reference to official historical documentation, or confirmation that an archived licensed XF1 package remains legitimately obtainable would be sufficient.


Thank you very much.
 
If I purchase a XenForo license today, would my customer account give me legitimate access to archived XenForo 1.x releases, particularly versions from the XF 1.1–1.4 period?
Yes, you can download XenForo from the first release of 1.0.0 to the last release of 1.5.24, and any version between, as well as 2.0.0 to the last version of when updates expire for that license in 1 year after purchase (ie. a purchase today gets you 1.0.0–1.5.24 and 2.0.0–2.3.12~, but stops at the highest version when your license expires with indefinite access).
 
Hello,


I am conducting a technical reproducibility study involving the historical behavior of XenForo 1.x. I am trying to verify one very specific aspect of the original XF1 URL-generation code.


Before purchasing a license, I would appreciate clarification on either of the following:


1. Archived releases


If I purchase a XenForo license today, would my customer account give me legitimate access to archived XenForo 1.x releases, particularly versions from the XF 1.1–1.4 period?


2. Historical XF1 behavior


Alternatively, could a XenForo staff member or developer confirm the historical behavior of:


XenForo_Link::buildIntegerAndTitleUrlComponent()


Specifically, in XenForo 1.x, when the title passed to that function becomes an empty string after URL normalization, did the function fall back to returning only the integer ID?


In other words, I am trying to distinguish between these two cases:


title.ID


versus, when the normalized title is empty:


ID


I am not asking whether an ID-only URL is accepted as an alternative route or redirect. I am specifically trying to establish whether the historical XF1 URL-generation function itself produced the integer-only component in that per-record empty-title case.


I do not need the complete proprietary source code. A confirmation from XenForo staff/development, a reference to official historical documentation, or confirmation that an archived licensed XF1 package remains legitimately obtainable would be sufficient.


Thank you very much.
Here's the function if that's useful to you. It was committed by @Mike 17 years ago:

PHP:
    /**
     * Builds the URL component for an integer and title. Outputs <int> or <int>-<title>.
     *
     * @param integer $integer
     * @param string $title
     * @param boolean|null $romanize If true, non-latin strings are romanized. If null, use default setup
     *
     * @return string
     */
    public static function buildIntegerAndTitleUrlComponent($integer, $title = '', $romanize = null)
    {
        if ($title && self::$_includeTitlesInUrls)
        {
            if ($romanize === null)
            {
                $romanize = self::$_romanizeTitles;
            }
            $title = self::getTitleForUrl($title, $romanize);
            if ($title !== '')
            {
                # /item-title.id/ (where delimiter is '.')
                return urlencode($title) . XenForo_Application::URL_ID_DELIMITER . intval($integer);
            }
        }

        return intval($integer);
    }

To answer your question if the title becomes an empty string, only the integer is returned. i.e. result was always e.g. threads/1234 never threads/.1234

The behaviour is consistent all the way back to XenForo 1.0.0.
 
Here's the function if that's useful to you. It was committed by @Mike 17 years ago:

PHP:
    /**
     * Builds the URL component for an integer and title. Outputs <int> or <int>-<title>.
     *
     * @param integer $integer
     * @param string $title
     * @param boolean|null $romanize If true, non-latin strings are romanized. If null, use default setup
     *
     * @return string
     */
    public static function buildIntegerAndTitleUrlComponent($integer, $title = '', $romanize = null)
    {
        if ($title && self::$_includeTitlesInUrls)
        {
            if ($romanize === null)
            {
                $romanize = self::$_romanizeTitles;
            }
            $title = self::getTitleForUrl($title, $romanize);
            if ($title !== '')
            {
                # /item-title.id/ (where delimiter is '.')
                return urlencode($title) . XenForo_Application::URL_ID_DELIMITER . intval($integer);
            }
        }

        return intval($integer);
    }

To answer your question if the title becomes an empty string, only the integer is returned. i.e. result was always e.g. threads/1234 never threads/.1234

The behaviour is consistent all the way back to XenForo 1.0.0.
Hi Chris,


Thank you very much for taking the time to dig up the actual function and commit history — that's exactly the confirmation I needed. Seeing the fallback to return intval($integer) when the title is empty, and your note that this has been consistent since XenForo 1.0.0, resolves the specific ambiguity in my reproducibility study.


I really appreciate you going beyond a general answer and providing the original code with attribution. This has been extremely helpful.


Thanks again to you and the XenForo team.


Best regards,
Álvaro
 
Proof of what @frm explained - this is the bottom of the list of available downloads:

View attachment 344187
Hi Sim,


Thank you for taking the screenshot — that's really helpful confirmation. Seeing the full list all the way down to 1.0.0 makes it clear that the older XF1.x releases are still there in the download archive, not just the recent ones.


I appreciate you and frm both taking the time to check this for me.


Best regards,
Álvaro
 
Yes, you can download XenForo from the first release of 1.0.0 to the last release of 1.5.24, and any version between, as well as 2.0.0 to the last version of when updates expire for that license in 1 year after purchase (ie. a purchase today gets you 1.0.0–1.5.24 and 2.0.0–2.3.12~, but stops at the highest version when your license expires with indefinite access).
Hi frm,


Thank you for the detailed breakdown — that's exactly the clarity I needed on how license access works across the full 1.0.0–1.5.24 and 2.x range, including what happens once the license expires. I really appreciate you taking the time to lay that out.


Thanks again for the help.


Best regards,
Álvaro
 
Back
Top Bottom