[OzzModz] Post Areas

[OzzModz] Post Areas 2.1.3 Patch Level 2

No permission to download
Manual job just keeps tossing server errors. Just gonna let it run on its own and see if its working after that.
 
Errors was the wrong word. I just get this fella (no actual logged errors). I'm assuming its just timing out, which is why I was gonna let it run on its own tonight.

1679085951898.png
 
Cron ran but nothing displays. I'm not missing a user group permission I hope haha.

1679109187892.png

BUT, disabling the cache and it kind of works now. Sadly, its too unreliable, so gonna remove it for now.
 
Hi, I keep getting this error when trying to upload it to my add ons

  • ErrorException: Fatal Error: Trait "SV\Utils\InstallerHelper" not found
  • src/addons/Awedo/PostAreas/Setup.php:13
 
Server error during the rebuild
XF\Db\DeadlockException: MySQL query error [1213]: Deadlock found when trying to get lock; try restarting transaction in src/XF/Db/AbstractStatement.php at line 230
  1. XF\Db\AbstractStatement->getException() in src/XF/Db/Mysqli/Statement.php at line 198
  2. XF\Db\Mysqli\Statement->getException() in src/XF/Db/Mysqli/Statement.php at line 79
  3. XF\Db\Mysqli\Statement->execute() in src/XF/Db/AbstractAdapter.php at line 96
  4. XF\Db\AbstractAdapter->query() in src/XF/Db/AbstractAdapter.php at line 276
  5. XF\Db\AbstractAdapter->insertBulk() in src/addons/Awedo/PostAreas/Job/CacheRebuild.php at line 52
  6. Awedo\PostAreas\Job\CacheRebuild->rebuildById() in src/XF/Job/AbstractRebuildJob.php at line 42
  7. XF\Job\AbstractRebuildJob->run() in src/XF/Job/Manager.php at line 260
  8. XF\Job\Manager->runJobInternal() in src/XF/Job/Manager.php at line 202
  9. XF\Job\Manager->runJobEntry() in src/XF/Job/Manager.php at line 118
  10. XF\Job\Manager->runByIds() in src/XF/Admin/Controller/Tools.php at line 122
  11. XF\Admin\Controller\Tools->actionRunJob() in src/XF/Mvc/Dispatcher.php at line 352
  12. XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 259
  13. XF\Mvc\Dispatcher->dispatchFromMatch() in src/XF/Mvc/Dispatcher.php at line 115
  14. XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 57
  15. XF\Mvc\Dispatcher->run() in src/XF/App.php at line 2483
  16. XF\App->run() in src/XF.php at line 524
  17. XF::runApp() in admin.php at line 13
Refreshed admin.php?tools/run-job and it deleted a couple of members and then continued the rebuild process.
 
Last edited:
Would you mind updating it to use XF's inhouse data table styling? It would be very easy to implement and looks much better.

I managed it on my site very easily:
HTML:
<xf:title>{{ phrase('awedo_pa_xs_post_areas', {'name': $user.username}) }}</xf:title>

<xf:css src="awedo_post_areas_tab_content.css" />

<xf:if is="{$postAreas}">
    <div class="block">
        <div class="block-container">
            <xf:datalist>
                <xf:datarow rowtype="header">
                    <xf:cell>{{ phrase ('forum') }}</xf:cell>
                    <xf:cell class="dataList-cell--min">{{ phrase ('threads') }}</xf:cell>
                    <xf:cell class="dataList-cell--min">{{ phrase ('posts') }}</xf:cell>
                </xf:datarow>
                <xf:foreach loop="$postAreas" key="$key" value="$entry">
                    <xf:datarow rowclass="dataList-row--noHover">
                        <xf:cell class="dataList-cell--main">
                            <div class="dataList-mainRow">
                                <a href='{{ link ('forums', {'node_id': {$postAreas.{$key}.node_id}}) }}' rel="nofollow"> {$entry.title} </a>
                            </div>
                        </xf:cell>
                        <xf:cell class="dataList-cell--min">
                            <a href='{{ link('search/threads-of-member', null, {'user_id': {$user.user_id}, 'node': {$postAreas.{$key}.node_id} } ) }}'><xf:if is="$entry.thread_count > 0">{$entry.thread_count}</xf:if></a>                               
                        </xf:cell>
                        <xf:cell class="dataList-cell--min">
                             <a href='{{ link('search/search', null, {'search_type': 'post', 'c[users]': {$user.username}, 'c[nodes][]': {$postAreas.{$key}.node_id} } ) }}'>{$entry.post_count}</a>                       
                        </xf:cell>
                    </xf:datarow>
                </xf:foreach>
            </xf:datalist>
        </div>
    </div>
<xf:else />
    <div class="blockMessage">{{ phrase ('awedo_pa_no_posts') }} </div>
</xf:if>
 
@Ozzy47 thanks for releasing this. It's an excellent way for people to quickly find their threads/posts in specific forums.
However, I have found a bug/issue. If there is a forum with View threads by others set to No, it should not appear in the list for users viewing the Post Areas for other users.
We use a forum with a permission View threads by others set to No so that users can escalate moderating decisions without other members or moderators seeing their threads. Only admin can see their threads.
But if entries appear in the Post Areas list, then every other member can see that the member has posted an escalation, which is what we want to avoid.
Would it be possible to exclude forums from the list if they have View threads by others set to No?
Or at least make it so that only the owner of the thread(s) in that forum can see them in the list?
Thanks
 
Are you viewing the persons post areas as an admin or as a user that is different from the profile you’re viewing?
 
1712673222334.webp

1712673234107.webp


Hello! Interesting addon, I like the concept however when attempted to try it out, it had unfortunately presented me with this issue. No error logs as far as I can see.
 
Would you mind updating it to use XF's inhouse data table styling? It would be very easy to implement and looks much better.

I managed it on my site very easily:
HTML:
<xf:title>{{ phrase('awedo_pa_xs_post_areas', {'name': $user.username}) }}</xf:title>

<xf:css src="awedo_post_areas_tab_content.css" />

<xf:if is="{$postAreas}">
    <div class="block">
        <div class="block-container">
            <xf:datalist>
                <xf:datarow rowtype="header">
                    <xf:cell>{{ phrase ('forum') }}</xf:cell>
                    <xf:cell class="dataList-cell--min">{{ phrase ('threads') }}</xf:cell>
                    <xf:cell class="dataList-cell--min">{{ phrase ('posts') }}</xf:cell>
                </xf:datarow>
                <xf:foreach loop="$postAreas" key="$key" value="$entry">
                    <xf:datarow rowclass="dataList-row--noHover">
                        <xf:cell class="dataList-cell--main">
                            <div class="dataList-mainRow">
                                <a href='{{ link ('forums', {'node_id': {$postAreas.{$key}.node_id}}) }}' rel="nofollow"> {$entry.title} </a>
                            </div>
                        </xf:cell>
                        <xf:cell class="dataList-cell--min">
                            <a href='{{ link('search/threads-of-member', null, {'user_id': {$user.user_id}, 'node': {$postAreas.{$key}.node_id} } ) }}'><xf:if is="$entry.thread_count > 0">{$entry.thread_count}</xf:if></a>                              
                        </xf:cell>
                        <xf:cell class="dataList-cell--min">
                             <a href='{{ link('search/search', null, {'search_type': 'post', 'c[users]': {$user.username}, 'c[nodes][]': {$postAreas.{$key}.node_id} } ) }}'>{$entry.post_count}</a>                      
                        </xf:cell>
                    </xf:datarow>
                </xf:foreach>
            </xf:datalist>
        </div>
    </div>
<xf:else />
    <div class="blockMessage">{{ phrase ('awedo_pa_no_posts') }} </div>
</xf:if>
This looks great Matt, thank you.
 
I just tried this on a fresh install on a 2.3 site and it seems to be working correctly. What size is the site?
Size as in popularity? Uh not sure exactly. Site has existed since 2018, and has quite a bit of data. I assume, from your question, that it would take some time to get all the data to be easily displayed onto pages?

(Also whilst I am here, is it possible to show specific subforums and only allow their own user to view the page?)
 
Top Bottom