Hierarchical view update – phoning a friend in India
Welcome Cyclones Fans! › Forums › Misc › Hierarchical view update – phoning a friend in India
- This topic has 16 replies, 6 voices, and was last updated 7 years, 10 months ago by Tony (admin).
-
AuthorPosts
-
-
Tony (admin)Keymaster
I’ve spent literally days working on the post threading for the home page. You know, indenting replies and reordering them to show who is replying to who. I’ve come very close in a few different ways to getting it to work right. Normally in a regular site/app that I created myself I could have made the changes fairly easily, but because of the site engine and plugins I’m using to create the forum, I’m stuck in their system. This made this task astoundingly complicated.
I finally realized I had run up against either a limitation in my cranium, or a limitation in the site’s foundation. Assuming the problem is inside my cranium, I decided I would try out hiring a developer from India to get a different set of brain cells on this.Hopefully I’ll have some progress in the next 2-3 days.
I’m bummed that I’ve finally come up against a code thing that I seemingly couldn’t overpower by sheer time and/or will power. First time. But I can’t waste days being stuck on something like this. Better off getting a fresh set of brain cells on it and see what happens.
Cheers and GO UTES.
-
jamarcus24Participant
We believe in you, Tony.
-
96GradAlumMember
You need to use recurssion. This way you can indent in an unlimited way – without having to know how many children each post has. Does that make sense. I’ve written these before but it’s been quite a while. It’s a very uncommon technique but it works perfectly for this situation. Ask you developer if he has ever done a recursive loop. If not tell him that’s the solution to the problem. He’ll be able to find examples in PHP on the web.
I did some poking around and it looks like your site (or the platform for your site) is written in PHP. Is this correct? I’ve never coded in PHP but it’s not that harry since it’s a scripting language.
PS I’m really impressed that you’re willing to hire someone to work on it. That is awesome. Shows a serious level of commitment.
-
Tony (admin)Keymaster
Yes @96GradAlum I’ve actually mucked around with some recursion loops. I can get recursion to work for cotent pages here, but not forum replies because the database structure is different. Yes it is PHP based on the WordPress CMS. That’s what’s making it a pain in the ass. If I wrote the forum myself in PHP I’d be done, but having to jump through their hoops is the problem. I’m considering rewriting the whole site to get out of the WP sphere, but it does allow me to do other things easily and quickly.
-
96GradAlumMember
Lol … OK … now that I know you’re technical I’ll stop talking down to you. Sorry π
-
-
96GradAlumMember
Oh btw what I said above is only true if the database supports it. I suspect it does though. What I mean by that is that each child post has a reference to it’s parent. If it only has a refernce to the main post (that started the thread) then you’re screwed and no coding technique will solve the indenting problem.
Hopefully my explination makes sense. It’s hard to talk technical with someone if they don’t have at least some background in it π
-
Tony (admin)Keymaster
There is a reference to the parent in the database, and not in a related table which should make it easier. I can do recursion for a different post type than a reply and I got it to work. When I change the type to reply, it all ends up flat. The recursion doesn’t happen, it just loops in the first loop and doesn’t call itself. Does that make sense? Probably a stupid simple reason that I’m missing.
-
DaedalusParticipant
I’d offer some help with an example set of database records but it sounds like you’re seeking advice from someone you know. If that fails, let me know and I’ll apply my finely U-of-U-training in algorithms to it (Comp. Sci. degree). Or, you know, whatever. π
Vendor lock-down can be a pain even if it provides shortcuts. Might do better with a more abstract toolkit, but that’s a helluva lot of work.
-
Tony (admin)Keymaster
Actually I don’t know them. Just went through a site to hire developers. Thanks @daedalus. I’m happy to post a small example mysql table if you want to play with it. The catch is that the site CMS does a “pre query” which does all that ordering and such, then I’m using vendor specific functions to render stuff like the reply content, avatars, etc. So if I go without that pre-query and vendor specific stuff I’ll have to rewrite a pile of code for all the reply content and layout.
-
-
Tony (admin)Keymaster
Wait I was wrong. The parent for a reply is stored in a meta table, not the main table. Boo. So yeah now I remember. I did a mysql join of the main table and the meta table but there’s strangeness in the db structure. The meta table stores a “reply_to” key, which is the id of the parent of a reply to a reply. BUT if one replies to the main topic, there is NO reply to meta key. There is still the main topic parent however, which is stored in the main table.
So if one replies to the main topic, the main table parent field “post_parent” contains the parent, and if one replies to a reply, the meta table reply_to meta key stores the parent.
If every entry, reply or topic, shared the same parent field it would be far easier. That’s why I’ve been trying to do a join of the two tables, then iterate through the recursive loop. But my query is not right.
BLA.
-
DaedalusParticipant
so maybe a left join between the two tables that allows null reply_to values, then return as the column “parent” the value “ifnull(reply_to, post_parent)”. I can probably expand that, but I’m allegedly supposed to be working on my own code at this hour. π
-
Tony (admin)Keymaster
so maybe a left join between the two tables that allows null reply_to values, then return as the column “parent” the value “ifnull(reply_to, post_parent)”. I can probably expand that, but I’m allegedly supposed to be working on my own code at this hour.
Wow I’ve been working on this and what you are saying makes sense. I seem to be moving close to what you are suggesting.
Maybe I’m doing it bassackwards, but what I had done so far was doing query to get a count for reply_to. If it was > 0, then I queried the meta table for the parent values, then used those values in a 2nd query against the post table. Unbelievably IT WORKED. I have recursion and replies. The problem is yes, none of the first level replies show up, only replies to replies. I was just contemplating a join (which I’m so-so at). Currently it is an if statement: if reply_to > 0 then do the query above, else do the regular flat query from the post_parent.
I’ll look at the join more. One issue is that there can be multiple records in the reply_to with the same parent so I can’t do a 1-1 join between the meta and the post table.
-
-
-
-
-
-
leftyjaceParticipant
So nice to know I’m not the only die hard geekmeister in this world that also loves Utah sports
-
jrj84105Participant
Even if it is ultimately doable is it permissible under the terms of agreement with WordPress?
Getting the threaded format out of one of these pre-fab products is like getting blood from a stone, and even if it’s pulled off, it may violate terms of agreement. People are used to the threaded format of Utefans but unless someone commits to building, maintaining, updating, and supporting a made from scratch site with no external support, it’s probably not going to happen.
I’d say that people should just get used to the idea of a more compartmentalized format, but as long as Utefans is around people will seem to hold strong to that threaded preference, even if UteHub does a lot of other things much better.
-
Tony (admin)Keymaster
Even if it is ultimately doable is it permissible under the terms of agreement with WordPress?
No worries on that. It’s all open source, so one can hack it to one’s content.
-
jrj84105Participant
That’s awesome. I think if you pull that off, it will definitely satisfy a large contingent of current and future users.
-
Tony (admin)Keymaster
Thatβs awesome. I think if you pull that off, it will definitely satisfy a large contingent of current and future users.
It will be pulled off, one way or another.
-
-
-
-
-
-
AuthorPosts
- You must be logged in to reply to this topic.