Ads Manager 2 by Siropu

Ads Manager 2 by Siropu [Paid] 2.6.4

No permission to buy (€50.00)
@Siropu there's a conflicting bug with user group discounts. If the member is in two groups with a discount it is showing the lower discount. So say Premier Tier 1 25%, Premier Tier 2 50%, member is in both, when purchasing a package it shows 25% not 50%, until you remove that usergroup from the 25% group.
This bug still exists and I'm trying to add new discounts and it's super annoying to have to redo them all to put them in a certain order, explained here:
I found a temporary workaround. I edited my discount order and it worked. So the first discount I had was the 25% and then I created the 50%. A member of both groups was only getting 25%. I edited the discounts and just swapped them by changing the discount fields so the 50% is the first one listed in acp. That fixed it for now. Looks like it has to do with the order they are listed.
 
Last edited:
@Siropu

Some suggestions for improving the add-on would be:


Add a new “Sponsor” advertisement.
Give advertisers the option to add their logo to sponsor a section of the site that would be visible both on the home page and where the filters are located, for example. I can't suggest a universal placement that would be visible on both desktop and mobile devices, but it might be useful to have this option for long-term partners.

Allow the use of HTML on the ads manager's “Home Page” instead of BBCode. Because it is simply more powerful and versatile. Also, to insert multiple translations of the text, perhaps.
 
@Siropu

Seeing these errors every 30 minutes when the cron runs. Happens with both XF 2.3.9 and XF 2.3.10.

Code:
Server error log

    LogicException: Attempted to set 'prefix_id' while a save was pending without forceSet src/XF/Mvc/Entity/Entity.php:645

    Generated by: Unknown account Mar 6, 2026 at 9:03 AM

Stack trace

#0 src/XF/Mvc/Entity/Entity.php(618): XF\Mvc\Entity\Entity->set('prefix_id', 0)
#1 src/XF/Service/Thread/EditorService.php(92): XF\Mvc\Entity\Entity->__set('prefix_id', 0)
#2 src/addons/Siropu/AdsManager/Entity/AdExtra.php(87): XF\Service\Thread\EditorService->setPrefix(0)
#3 src/addons/Siropu/AdsManager/Service/Ad/PromoThreadManager.php(55): Siropu\AdsManager\Entity\AdExtra->togglePromoThreadOptions()
#4 src/addons/Siropu/AdsManager/Entity/AdExtra.php(184): Siropu\AdsManager\Service\Ad\PromoThreadManager->save()
#5 src/XF/Mvc/Entity/Entity.php(1330): Siropu\AdsManager\Entity\AdExtra->_postSave()
#6 src/XF/Mvc/Entity/Entity.php(1378): XF\Mvc\Entity\Entity->save(false, true)
#7 src/addons/Siropu/AdsManager/Service/AdExtra/Manager.php(104): XF\Mvc\Entity\Entity->saveIfChanged(true, false)
#8 src/addons/Siropu/AdsManager/Behavior/ExtraUpdatable.php(51): Siropu\AdsManager\Service\AdExtra\Manager->save()
#9 src/XF/Mvc/Entity/Entity.php(1333): Siropu\AdsManager\Behavior\ExtraUpdatable->postSave()
#10 src/addons/Siropu/AdsManager/Cron/Ad.php(43): XF\Mvc\Entity\Entity->save()
#11 src/XF/Job/Cron.php(41): Siropu\AdsManager\Cron\Ad::disableExpiredAds(Object(XF\Entity\CronEntry))
#12 src/XF/Job/Manager.php(275): XF\Job\Cron->run(8)
#13 src/addons/SV/SlowQueryLogger/XF/Job/Manager.php(34): XF\Job\Manager->runJobInternal(Array, 8)
#14 src/XF/Job/Manager.php(205): SV\SlowQueryLogger\XF\Job\Manager->runJobInternal(Array, 8)
#15 src/XF/Job/Manager.php(89): XF\Job\Manager->runJobEntry(Array, 8)
#16 src/XF/Cli/Command/RunJobs.php(58): XF\Job\Manager->runQueue(false, 8)
#17 src/vendor/symfony/console/Command/Command.php(298): XF\Cli\Command\RunJobs->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 src/vendor/symfony/console/Application.php(1040): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 src/vendor/symfony/console/Application.php(301): Symfony\Component\Console\Application->doRunCommand(Object(XF\Cli\Command\RunJobs), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 src/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 src/XF/Cli/Runner.php(115): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 cmd.php(17): XF\Cli\Runner->run()
#23 {main}
 
@Siropu I'm not sure what the email campaigns are to advise an advertiser that their ad is expiring soon, email when expired and sending stats, but if not already, I'd like to have one sent a period of time after expiring to remind them to renew to keep their ad going. Need some marketing effort to keep advertisers engaged. What is currently emailed, how can this be improved for marketing purposes?
 
Suggestion:
1773178743623.webp

I have a group that can create 2 promo threads per year. The promo code is in a notice. If you could add an interval option below this, that would be awesome.
User usage limit: 2
Every: Year (month, week, etc.)
Thanks!
 
Last edited:
Bug: Min and Max Invoice and Discount values will not allow decimals. Example: Enter $37.50 and you are prompted to use a value between 37 and 38.
Can this be fixed? I am constantly creating promo codes and some are for half off (dollar value) of an ad, example, $12.50 being half of $25, and I cannot create them. I can't use percentages because they could apply it to whatever they buy and I do not want to cap the max invoice in case they want to add more or sticky it so I want a hard dollar value for a certain amount off and it will only accept whole dollars. Thanks
 
Last edited:
Back
Top Bottom