Link Checker for XenForo 2.x by AddonsLab

Link Checker for XenForo 2.x by AddonsLab [Paid] 3.8.0

No permission to buy ($54.99)
Trying the 7 Day Trial Version, but all I get is a "Licensing Error" with every Action I am trying to start.
XF 2.1, latest Link Checker Addon Version.

Doesn´t matter if I use the License Key that comes with the Trial or if I leave it empty.

Please use the trial key you can copy from your account and it should work fine. Please contact us at https://customers.addonslab.com/submitticket.php if you still have any issues.

Thank you!
 
I have installed the latest versions of Xenforo and this addon. When I go to the backend in section "Batch Update Links" I get the following error message above: "System load detection failed."

What is the cause and how can I fix the problem?
 
I have installed the latest versions of Xenforo and this addon. When I go to the backend in section "Batch Update Links" I get the following error message above: "System load detection failed."

What is the cause and how can I fix the problem?

We are using the standard PHP function for detection of server load - http://php.net/manual/en/function.sys-getloadavg.php The message means the function failed to work, which is possible on some operating systems, most commonly on Windows servers.

Server load detection is not essential for the product to work and can be fully disabled. It just tries to prevent server overload when there are too many links to check. Enter "0" for the setting "Server Load Limit" in the product's settings page to disable it. If you need the feature, please contact us by submitting a ticket and we will try to resolve the problem it, if technically possible.

Thank you!
 
@AddonsLab I need for your confirmation. Does this error log from your add-on or Xenforo bug?

Code:
ErrorException: Template error: Cannot call method hasPermission on a non-object (NULL) src/XF/Template/Templater.php:970

Generated by: mahmed Mar 28, 2019 at 2:45 AM

Stack trace

#0 [internal function]: XF\Template\Templater->handleTemplateError(512, 'Cannot call met...', '/home/nadda/pub...', 970, Array)
#1 src/XF/Template/Templater.php(970): trigger_error('Cannot call met...', 512)
#2 internal_data/code_cache/templates/l1/s6/public/tso_member_list_tso_stat.php(8): XF\Template\Templater->method(NULL, 'hasPermission', Array)
#3 src/XF/Template/Templater.php(1301): XF\Template\Templater->{closure}(Object(SV\ElasticSearchEssentials\XF\Template\Templater), Array)
#4 src/addons/AddonsLab/LinkChecker/XF/Template/Templater.php(89): XF\Template\Templater->renderTemplate('tso_member_list...', Array, true)
#5 src/XF/Template/Templater.php(1374): AddonsLab\LinkChecker\XF\Template\Templater->renderTemplate('public:tso_memb...', Array)
#6 internal_data/code_cache/templates/l1/s6/public/member_list_macros.php(106): XF\Template\Templater->includeTemplate('public:tso_memb...', Array)
#7 src/XF/Template/Templater.php(701): XF\Template\Templater->{closure}(Object(SV\ElasticSearchEssentials\XF\Template\Templater), Array, Array)
#8 internal_data/code_cache/templates/l1/s6/public/reaction_list.php(33): XF\Template\Templater->callMacro('member_list_mac...', 'item', Array, Array)
#9 src/XF/Template/Templater.php(701): XF\Template\Templater->{closure}(Object(SV\ElasticSearchEssentials\XF\Template\Templater), Array, Array)
#10 internal_data/code_cache/templates/l1/s6/public/reaction_list.php(139): XF\Template\Templater->callMacro('reaction_list', 'reactions_list', Array, Array)
#11 src/XF/Template/Templater.php(1301): XF\Template\Templater->{closure}(Object(SV\ElasticSearchEssentials\XF\Template\Templater), Array)
#12 src/addons/AddonsLab/LinkChecker/XF/Template/Templater.php(89): XF\Template\Templater->renderTemplate('reaction_list', Array, true)
#13 src/XF/Template/Template.php(24): AddonsLab\LinkChecker\XF\Template\Templater->renderTemplate('public:reaction...', Array)
#14 src/XF/Mvc/Renderer/Json.php(84): XF\Template\Template->render()
#15 src/XF/Mvc/Renderer/Json.php(68): XF\Mvc\Renderer\Json->renderHtmlFallback('XF:Reaction\\Lis...', 'public:reaction...', Array)
#16 src/XF/Mvc/Dispatcher.php(418): XF\Mvc\Renderer\Json->renderView('XF:Reaction\\Lis...', 'public:reaction...', Array)
#17 src/XF/Mvc/Dispatcher.php(400): XF\Mvc\Dispatcher->renderView(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#18 src/XF/Mvc/Dispatcher.php(360): XF\Mvc\Dispatcher->renderReply(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#19 src/XF/Mvc/Dispatcher.php(53): XF\Mvc\Dispatcher->render(Object(XF\Mvc\Reply\View), 'json')
#20 src/XF/App.php(2177): XF\Mvc\Dispatcher->run()
#21 src/XF.php(390): XF\App->run()
#22 index.php(20): XF::runApp('XF\\Pub\\App')
#23 {main}

Request state

array(4) {
  ["url"] => string(155) "/posts/555897/reactions?_xfRequestUri=%2Fthreads%2F58525%2Fpage-2&_xfWithData=1&_xfToken=1553719473%2C18b95a651dc10622551981f1538a3d97&_xfResponseType=json"
  ["referrer"] => string(43) "/threads/58525/page-2"
  ["_GET"] => array(4) {
    ["_xfRequestUri"] => string(21) "/threads/58525/page-2"
    ["_xfWithData"] => string(1) "1"
    ["_xfToken"] => string(43) "1553719473,18b95a651dc10622551981f1538a3d97"
    ["_xfResponseType"] => string(4) "json"
  }
  ["_POST"] => array(0) {
  }
}
 
@AddonsLab I need for your confirmation. Does this error log from your add-on or Xenforo bug?

Code:
ErrorException: Template error: Cannot call method hasPermission on a non-object (NULL) src/XF/Template/Templater.php:970

Generated by: mahmed Mar 28, 2019 at 2:45 AM

Stack trace

#0 [internal function]: XF\Template\Templater->handleTemplateError(512, 'Cannot call met...', '/home/nadda/pub...', 970, Array)
#1 src/XF/Template/Templater.php(970): trigger_error('Cannot call met...', 512)
#2 internal_data/code_cache/templates/l1/s6/public/tso_member_list_tso_stat.php(8): XF\Template\Templater->method(NULL, 'hasPermission', Array)
#3 src/XF/Template/Templater.php(1301): XF\Template\Templater->{closure}(Object(SV\ElasticSearchEssentials\XF\Template\Templater), Array)
#4 src/addons/AddonsLab/LinkChecker/XF/Template/Templater.php(89): XF\Template\Templater->renderTemplate('tso_member_list...', Array, true)
#5 src/XF/Template/Templater.php(1374): AddonsLab\LinkChecker\XF\Template\Templater->renderTemplate('public:tso_memb...', Array)
#6 internal_data/code_cache/templates/l1/s6/public/member_list_macros.php(106): XF\Template\Templater->includeTemplate('public:tso_memb...', Array)
#7 src/XF/Template/Templater.php(701): XF\Template\Templater->{closure}(Object(SV\ElasticSearchEssentials\XF\Template\Templater), Array, Array)
#8 internal_data/code_cache/templates/l1/s6/public/reaction_list.php(33): XF\Template\Templater->callMacro('member_list_mac...', 'item', Array, Array)
#9 src/XF/Template/Templater.php(701): XF\Template\Templater->{closure}(Object(SV\ElasticSearchEssentials\XF\Template\Templater), Array, Array)
#10 internal_data/code_cache/templates/l1/s6/public/reaction_list.php(139): XF\Template\Templater->callMacro('reaction_list', 'reactions_list', Array, Array)
#11 src/XF/Template/Templater.php(1301): XF\Template\Templater->{closure}(Object(SV\ElasticSearchEssentials\XF\Template\Templater), Array)
#12 src/addons/AddonsLab/LinkChecker/XF/Template/Templater.php(89): XF\Template\Templater->renderTemplate('reaction_list', Array, true)
#13 src/XF/Template/Template.php(24): AddonsLab\LinkChecker\XF\Template\Templater->renderTemplate('public:reaction...', Array)
#14 src/XF/Mvc/Renderer/Json.php(84): XF\Template\Template->render()
#15 src/XF/Mvc/Renderer/Json.php(68): XF\Mvc\Renderer\Json->renderHtmlFallback('XF:Reaction\\Lis...', 'public:reaction...', Array)
#16 src/XF/Mvc/Dispatcher.php(418): XF\Mvc\Renderer\Json->renderView('XF:Reaction\\Lis...', 'public:reaction...', Array)
#17 src/XF/Mvc/Dispatcher.php(400): XF\Mvc\Dispatcher->renderView(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#18 src/XF/Mvc/Dispatcher.php(360): XF\Mvc\Dispatcher->renderReply(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#19 src/XF/Mvc/Dispatcher.php(53): XF\Mvc\Dispatcher->render(Object(XF\Mvc\Reply\View), 'json')
#20 src/XF/App.php(2177): XF\Mvc\Dispatcher->run()
#21 src/XF.php(390): XF\App->run()
#22 index.php(20): XF::runApp('XF\\Pub\\App')
#23 {main}

Request state

array(4) {
  ["url"] => string(155) "/posts/555897/reactions?_xfRequestUri=%2Fthreads%2F58525%2Fpage-2&_xfWithData=1&_xfToken=1553719473%2C18b95a651dc10622551981f1538a3d97&_xfResponseType=json"
  ["referrer"] => string(43) "/threads/58525/page-2"
  ["_GET"] => array(4) {
    ["_xfRequestUri"] => string(21) "/threads/58525/page-2"
    ["_xfWithData"] => string(1) "1"
    ["_xfToken"] => string(43) "1553719473,18b95a651dc10622551981f1538a3d97"
    ["_xfResponseType"] => string(4) "json"
  }
  ["_POST"] => array(0) {
  }
}

The error is not from our add-on. It is most likely related to the template "tso_member_list_tso_stat" and whichever add-on provides it.
 
@AddonsLab
Per FAQ:
Check the status of all links using the "Check Dead Links" tool on the same page. This tool sends requests to each URL to identify if they are broken or no. It will take a long time to execute, especially with many links and if many of them are broken or are pointing to slow servers.
Is it possible to run this through cli command?
If yes, what will be command to execute?

Also, If I cancel that (it now running for 7 hours through web), if I start it again next day, will be start from beggining or just check unchecked links?
 
@AddonsLab
Per FAQ:

Is it possible to run this through cli command?
If yes, what will be command to execute?

Also, If I cancel that (it now running for 7 hours through web), if I start it again next day, will be start from beggining or just check unchecked links?

No, unfortunately. However, this step is not that time-consuming, it just goes over the database and finds links in the text, processing around 1k records in 1-2 seconds. CLI/background tools are used in the product for checking the status of links, which can be much more time-consuming.

Thank you!
 
No, unfortunately. However, this step is not that time-consuming, it just goes over the database and finds links in the text, processing around 1k records in 1-2 seconds. CLI/background tools are used in the product for checking the status of links, which can be much more time-consuming.

Thank you!
maybe it is then a first option in faq, not second.
Questions are same.

Is it possible to run this through cli command?
If yes, what will be command to execute?

Also, If I cancel that (it now running for 7 hours through web), if I start it again next day, will be start from beggining or just check unchecked links?


It working for 7 hours (100 urls in batch) and it is now on half

41_05.webp
 
maybe it is then a first option in faq, not second.
Questions are same.




It working for 7 hours (100 urls in batch) and it is now on half

View attachment 200321

Sorry for the confusion, yes, this step is indeed the one that takes longer to execute. The tool is executed as a "background job", just like any other XenForo "rebuild" task. It can be run using any tool that allows running the build tool via command line, for example the add-on https://xenforo.com/community/resources/cli-job-runner.6478/ but we did not test and verify it. Checking the source code this workflow should work:

1. Install the add-on as instructed
2. Close the browser window running the check
3. Login via phpMyAdmin and check the table xf_job , where you should see a row with unique_key=allm_deferred_dead_link and set the value for manual_execute=0 This will turn the job into "background job" instead of a "manaully running job"
4. Run the cron job using the command line as instructed in the add-on:
$ php <path to your forum root>/cmd.php --time=3600 xf:run-jobs

The "--time" option here means to run the task for an hour (use any other number of seconds you think should be enough to check all links). If it does not manage to check them all in time you can just run the command one more time.

Just let us know if you still have an issue and we will assist you further.

Thank you!
 
So nothing like default xenforo commands
Bash:
# cd /home/nginx/domains/testsite.com/public/
# php cmd.php xf-rebuild:search

No, no custom command is implemented for it. If the above solution does not work for you for some reason, we will review it further and implement required changes.

Thank you!
 
No, no custom command is implemented for it. If the above solution does not work for you for some reason, we will review it further and implement required changes.

Thank you!
Thanks
Last qustion
If I cancel this now (it now running for 7 hours through web), if I start it again next day, will be start from beggining or just check unchecked links (where it stops today)?
 
Thanks
Last qustion
If I cancel this now (it now running for 7 hours through web), if I start it again next day, will be start from beggining or just check unchecked links (where it stops today)?

You have link status options to choose which links you want to check. Just select the ones that are still unchecked and it will continue checking them.
 
@AddonsLab Post menu along bottom of post, They don't correctly collapse into the "..." on mobile. Please add option for support Check Link move to the "..." menu in responsive mode.
 
Some bug

Code:
Server error log
Error: Call to undefined method AddonsLab\LinkChecker\ContentHandler\PostHandler::getNodeTree() src/addons/AddonsLab/LinkChecker/ContentHandler/PostHandler.php:199
Generated by: Sunka 27.04.2019. at 23:24
Stack trace
#0 src/addons/AddonsLab/LinkChecker/Library/Service/ReplacementOptionsProvider.php(52): AddonsLab\LinkChecker\ContentHandler\PostHandler->getReplacementOptions(Object(AddonsLab\LinkChecker\Library\Search\SearchCriteria), Object(AddonsLab\LinkChecker\Library\Replace\ReplaceCriteria))
#1 src/addons/AddonsLab/LinkChecker/Admin/Controller/Index.php(216): AddonsLab\LinkChecker\Library\Service\ReplacementOptionsProvider->getReplacementOptions(Object(AddonsLab\LinkChecker\Library\Search\SearchCriteria), Object(AddonsLab\LinkChecker\Library\Replace\ReplaceCriteria))
#2 src/XF/Mvc/Dispatcher.php(321): AddonsLab\LinkChecker\Admin\Controller\Index->actionLoadReplacementCriteria(Object(XF\Mvc\ParameterBag))
#3 src/XF/Mvc/Dispatcher.php(244): XF\Mvc\Dispatcher->dispatchClass('AddonsLab\\LinkC...', 'LoadReplacement...', Object(XF\Mvc\RouteMatch), Object(AddonsLab\LinkChecker\Admin\Controller\Index), NULL)
#4 src/XF/Mvc/Dispatcher.php(100): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(AddonsLab\LinkChecker\Admin\Controller\Index), NULL)
#5 src/XF/Mvc/Dispatcher.php(50): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#6 src/XF/App.php(2177): XF\Mvc\Dispatcher->run()
#7 src/XF.php(390): XF\App->run()
#8 admin.php(13): XF::runApp('XF\\Admin\\App')
#9 {main}
Request state
array(4) {
  ["url"] => string(42) "/admin.php?links/load-replacement-criteria"
  ["referrer"] => string(65) "https://www.pijanitvor.com/admin.php?links/batch-update&success=1"
  ["_GET"] => array(1) {
    ["links/load-replacement-criteria"] => string(0) ""
  }
  ["_POST"] => array(8) {
    ["search_criteria"] => array(7) {
      ["last_status_code"] => array(1) {
        [0] => string(3) "404"
      }
      ["domain"] => string(3) "all"
      ["report_count"] => string(1) "0"
      ["content_type"] => string(4) "post"
      ["post"] => array(8) {
        ["post_date_start"] => string(0) ""
        ["post_date_end"] => string(0) ""
        ["thread_date_start"] => string(0) ""
        ["thread_date_end"] => string(0) ""
        ["thread_id_filter"] => string(0) ""
        ["forum_ids"] => string(0) ""
        ["thread_starter_ids"] => string(0) ""
        ["post_author_ids"] => string(0) ""
      }
      ["tag_handler"] => string(3) "URL"
      ["URL"] => array(4) {
        ["tag_attribute_match_mode"] => string(6) "simple"
        ["tag_attribute_match"] => string(0) ""
        ["tag_text_match_mode"] => string(6) "simple"
        ["tag_text_match"] => string(0) ""
      }
    }
    ["replace_criteria"] => array(3) {
      ["type"] => string(6) "change"
      ["URL"] => array(4) {
        ["tag_attribute_replace_mode"] => string(0) ""
        ["tag_attribute_replace"] => string(0) ""
        ["tag_text_replace_mode"] => string(0) ""
        ["tag_text_replace"] => string(0) ""
      }
      ["removed_message"] => string(71) "[I][COLOR=rgb(75, 85, 85)] --- Nepostojeći link/slika --- [/COLOR][/I]"
    }
    ["process"] => array(1) {
      ["type"] => string(9) "immediate"
    }
    ["_preview_loaded"] => string(1) "1"
    ["_xfToken"] => string(8) "********"
    ["_xfRequestUri"] => string(39) "/admin.php?links/batch-update&success=1"
    ["_xfWithData"] => string(1) "1"
    ["_xfResponseType"] => string(4) "json"
  }
}
 
@AddonsLab Post menu along bottom of post, They don't correctly collapse into the "..." on mobile. Please add option for support Check Link move to the "..." menu in responsive mode.

@AddonsLab Do you watching this add-on? Getting same @Sunka Server error logs.

Code:
Error: Call to undefined method AddonsLab\LinkChecker\ContentHandler\PostHandler::getNodeTree() src/addons/AddonsLab/LinkChecker/ContentHandler/PostHandler.php:199

Generated by: Nirjonmela Jun 22, 2019 at 9:05 PM

Stack trace

#0 src/addons/AddonsLab/LinkChecker/Library/Service/ReplacementOptionsProvider.php(52): AddonsLab\LinkChecker\ContentHandler\PostHandler->getReplacementOptions(Object(AddonsLab\LinkChecker\Library\Search\SearchCriteria), Object(AddonsLab\LinkChecker\Library\Replace\ReplaceCriteria))
#1 src/addons/AddonsLab/LinkChecker/Admin/Controller/Index.php(216): AddonsLab\LinkChecker\Library\Service\ReplacementOptionsProvider->getReplacementOptions(Object(AddonsLab\LinkChecker\Library\Search\SearchCriteria), Object(AddonsLab\LinkChecker\Library\Replace\ReplaceCriteria))
#2 src/XF/Mvc/Dispatcher.php(321): AddonsLab\LinkChecker\Admin\Controller\Index->actionLoadReplacementCriteria(Object(XF\Mvc\ParameterBag))
#3 src/XF/Mvc/Dispatcher.php(244): XF\Mvc\Dispatcher->dispatchClass('AddonsLab\\LinkC...', 'LoadReplacement...', Object(XF\Mvc\RouteMatch), Object(AddonsLab\LinkChecker\Admin\Controller\Index), NULL)
#4 src/XF/Mvc/Dispatcher.php(100): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(AddonsLab\LinkChecker\Admin\Controller\Index), NULL)
#5 src/XF/Mvc/Dispatcher.php(50): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#6 src/XF/App.php(2177): XF\Mvc\Dispatcher->run()
#7 src/XF.php(390): XF\App->run()
#8 admin.php(13): XF::runApp('XF\\Admin\\App')
#9 {main}

Request state

array(4) {
  ["url"] => string(42) "/admin.php?links/load-replacement-criteria"
  ["referrer"] => string(51) "/admin.php?links/batch-update"
  ["_GET"] => array(1) {
    ["links/load-replacement-criteria"] => string(0) ""
  }
  ["_POST"] => array(8) {
    ["search_criteria"] => array(7) {
      ["domain"] => string(4) "only"
      ["domain_name"] => string(14) "filesflash.net"
      ["report_count"] => string(1) "0"
      ["content_type"] => string(4) "post"
      ["post"] => array(8) {
        ["post_date_start"] => string(0) ""
        ["post_date_end"] => string(0) ""
        ["thread_date_start"] => string(0) ""
        ["thread_date_end"] => string(0) ""
        ["thread_id_filter"] => string(0) ""
        ["forum_ids"] => string(0) ""
        ["thread_starter_ids"] => string(0) ""
        ["post_author_ids"] => string(0) ""
      }
      ["tag_handler"] => string(3) "URL"
      ["URL"] => array(4) {
        ["tag_attribute_match_mode"] => string(6) "simple"
        ["tag_attribute_match"] => string(0) ""
        ["tag_text_match_mode"] => string(6) "simple"
        ["tag_text_match"] => string(0) ""
      }
    }
    ["replace_criteria"] => array(3) {
      ["URL"] => array(4) {
        ["tag_attribute_replace_mode"] => string(0) ""
        ["tag_attribute_replace"] => string(0) ""
        ["tag_text_replace_mode"] => string(0) ""
        ["tag_text_replace"] => string(0) ""
      }
      ["type"] => string(10) "delete_tag"
      ["removed_message"] => string(19) "[B]Link Removed[/B]"
    }
    ["process"] => array(1) {
      ["type"] => string(9) "immediate"
    }
    ["_preview_loaded"] => string(1) "1"
    ["_xfToken"] => string(8) "********"
    ["_xfRequestUri"] => string(29) "/admin.php?links/batch-update"
    ["_xfWithData"] => string(1) "1"
    ["_xfResponseType"] => string(4) "json"
  }
}


Yes, of course, it can but we can't provide any estimated time when it will be added. We will try to work on it asap.

Thank you!

Do you have any chance adding this functionality?
 
AddonsLab updated Link Checker for XenForo 2.x by AddonsLab with a new update entry:

Minor bug-fixes

The version fixes a minor UI issue with the "Check links" link under the post. It will not be included in the pop-up in the responsive view instead of being shown as a separate link.

We have also fixed the PHP error caused by some missing files during installation. This would only affect the customers who used "Install/upgrade from archive" instead of manually uploading the package. Now the package can be installed using the archive as well.

The new version is available for all licensed...

Read the rest of this update entry...
 
Top Bottom