• API mapPath function removed? AAARGH!#

  • Pandy06269 Reply #1, 3 years, 9 months ago

    Reply
    I've just installed MODx 0.9.6.2-rc2, and got this error:

    Fatal error: Call to undefined method DocumentParser::mapPath() in /srv/www/htdocs/sanctree/manager/includes/document.parser.class.inc.php(769) : eval()'d code on line 20

    Has mapPath() disappeared from the API? I've used it in practically every snippet, module and plugin I've ever written.
    It worked in 0.9.6.2-rc1. IMHO you shouldn't remove such a vital function in an API within -rc releases - it's going to be a major task for me to change this particular bit of code, having spent the last 3 months building on 0.9.6.2-rc1.

    Is there an alternative way of finding the MODx path without hard-coding, or reading the config file in every snippet etc?


  • Pandy06269 Reply #2, 3 years, 9 months ago

    Reply
    For the time being of rolled back to 0.9.6.2-rc1 until I find out more about what's going on with this.


  • opengeek Reply #3, 3 years, 9 months ago

    Reply
    Not sure why you were using that function, but the mapPath() function was incorrect and rather than fix it and leave many different ways to get to the paths, it is recommended that you use the constants defined for these paths:

    MODX_BASE_PATH
    MODX_BASE_URL
    MODX_SITE_URL
    MODX_MANAGER_PATH
    MODX_MANAGER_URL

    or the config equivalents:

    $modx->config['base_path']
    $modx->config['base_url']
    $modx->config['site_url']
    $modx->config['manager_path']
    $modx->config['manager_url']

    which can also be used in tags:

    [(base_path)]
    [(base_url)]
    [(site_url)]
    [(manager_path)]
    [(manager_url)]

    I've written a lot of components for MODx and never been even tempted to use mapPath(). It probably should not have been just removed (bit hasty), but it would help you transition to Revolution more easily if you went ahead and modified your use of mapPath with the configuration variables or constants above; these will always be available and always accurate. This change will allow us to solve some long-standing issues in making the manager easier to get working on more environments.


  • Pandy06269 Reply #4, 3 years, 9 months ago

    Reply
    Quote from: OpenGeek at Aug 07, 2008, 05:58 PM
    Not sure why you were using that function, but the mapPath() function was incorrect and rather than fix it and leave many different ways to get to the paths, it is recommended that you use the constants defined for these paths:

    Mainly because it's in the documentation: http://modxcms.com/mappath.html, whereas I couldn't find the constants in the docs anywhere. When an API function is documented, you don't tend to think it's use is unsafe, or going to be removed.

    Quote from: OpenGeek at Aug 07, 2008, 05:58 PM
    I've written a lot of components for MODx and never been even tempted to use mapPath(). It probably should not have been just removed (bit hasty), but it would help you transition to Revolution more easily if you went ahead and modified your use of mapPath with the configuration variables or constants above; these will always be available and always accurate. This change will allow us to solve some long-standing issues in making the manager easier to get working on more environments.

    OK I'll change to use a constant as long as they're going to stay around. A better approach would have been to "depreciate" the function - if user has error reporting turned on, log or display a warning: "this function has been deprecated, please use MODX_BASE_PATH or $modx->config['base_path'] instead."

    The change you made could break sites completely (like my development site) - but if this was a stable release, and I'd gone and installed it over my 0.9.6.1 live site, it would have destroyed my live site.


  • opengeek Reply #5, 3 years, 9 months ago

    Reply
    Again, I never ever used the function; it was used in the manager at one time but removed long ago, and I didn't document it, nor ever would have. It causes problems on certain platforms and generally just never seemed to be a useful function to me. Yes it should have been deprecated (I assume you didn't really mean depreciate, though that would be a lot cooler), but damage done. I truly didn't think anyone used the function at all, and will refrain from making those assumptions in the future.


  • sottwell Reply #6, 3 years, 9 months ago

    Reply
    It's in the Wiki as well... http://wiki.modxcms.com/index.php/API:mapPath


  • opengeek Reply #7, 3 years, 9 months ago

    Reply
    Thanks for updating the wiki with the information.