Rediscovering PHP

So last night, armed with my nifty new font, I decided I’d get a move on with the next top-level version of Enthusiast. (Yes, I’ve started working on Enthusiast 4.0.)

(For those of you interested in it, it will probably be slow going, as whatever free time I have needs to be spent juggling between rest/recreation/social/family/other hobbies… and because I’m putting in a lot more effort in the backbone, and in usability.)

One thing I’ve always believed in is that you only get as good as what you actually do. That one might read a lot of tech blogs, a lot of white papers, a lot of those hifalutin framework blueprints… but if you don’t get down and dirty with code, you can’t expect to get better. It’s a given that the first few codes you churn out will be riddled with flaws. That’s normal, but that’s better than never getting over that simply because “I can’t fully understand OOP yet, I need to read more about it”. Ugh, get a grip, and get on with playing with code.

My first PHP project, way back when I was doing self-studying, was actually the precursor to Enthusiast. It was the script that handled my then-fanlisting, Bubblegum Crisis. After it was working, I moved on to the first “system” — an admin tool for handling my directory for NeoPets galleries. I actually put up that site, got a pretty nice following for it, and then when I weaned off NeoPets, I shut it down.

And then I started working on Enthusiast (the single-fanlisting version).

Without these first projects, I’d never have learned PHP. And this time, with PHP4’s End of Life looming in the distance, Enthusiast will be bringing me forward to PHP5. OOP, Exceptions, and many newfangled stuff in PHP isn’t new to me, but it’s been a while since I’ve actually handled PHP code continuously (almost eight months–the same time I’ve been with Yahoo! as a frontend engineer). I will be getting personal with a lot of these new things, in order to do what I need for it to do. And that’s quite exciting.

For anyone who’s thinking of learning PHP, the best way to learn really is by doing something you’re passionate about using PHP. I was passionate about NeoPets galleries; I was passionate about fanlistings. The passion drives you forward, and that’s a great thing to have.

I will probably be blogging here occasionally about new things I find out while working with PHP, or thoughts on development in general — what would you like to hear about?


  • I don’t know if you’re up for this, but maybe an implemented news script in Enthusiast itself? Currently I’m using FanUpdate for that and although it works great, I would rather have it all be implemented in one system. I know this might take a hell of a lot of work and you might not be up for it, but it’s just a suggestion.

    I’m very glad with the way Enth is so far, but a KIM list would be a nice idea too. Thanks for the wonderful script.

  • @Nelson: I’m using PEAR for the mailer, and I’m basically echoing what settings it needs. I remember working before with SMTP servers that don’t require authentication for sending, hence I do allow that in the settings page. Whether people check or not is up to their server’s settings :)

    I’ve never had problems with affiliate images paths personally, and I do use absolute paths, actually. If you’re having problems with images, you might want to ask at CodeGrrl.

  • Looking forward to this one. I’ve been having errors with 3.1.3. lately.

    In SMTP authentication settings, the checkbox with label “Yes, SMTP server requires authentication” should always be checked when SMTP is chosen as the mailer option. It may be left unchecked sometimes you know. Sometimes, when I approve a new member I don’t see any message in the error log. The next time I see it, it’s already loaded with two or three.
    Paths to images doesn’t seem friendly to me (I don’t know with the others) at all. For instance, affiliate images are visible in the administration panel but are not when called by the function that lists them down. I think this can be resolved by allowing absolute paths.
    Quite related to the previous query, there seems to be small bugs lurking behind uploading.

  • I’m glad to hear that you’re developing Enthusiast 4! Everything’s running well at 3 so I couldn’t think of that much to suggest.

    Maybe a mini userpic/gravatar on the fan pages for each fan? =)

  • Oh, it.. it is? I might not have done a proper upgrade then. I’ll download a fresh copy and see. :)

  • Hello Vickie, #3 and #5 is already in the latest Enth version. :)

  • Angela, thank you so much for your hard work. I love Enthusiast! :D I’m so glad to read that you haven’t abandoned the project. Hmm, I don’t have time to read through what everybody else said so they might already be mentioned, but here’s a few things I would personally love to see in Enth 4 without us having to go into the files and edit them every time we upgrade.

    mass delete function
    option to edit timezone from server time
    option to completely take out target in links
    additional fields in update form to follow
    show sort option and country, fave, etc. on all pages of fan list

    That’s all I can remember for now. Thanks so much again! :D

  • I can’t thank you enough for putting so much hard work into Enthusiast! It really makes life easier. :) That said, I’d like to echo the request for increased spam protection and/or a mass-delete function. As I type this I’m in the middle of deleting over 400 spam submissions to my fanlistings…one at a time. I keep avoiding updating my fanlistings because I don’t want to have to deal with it. I realize you’re on a deadline to get out the initial release, but I’m crossing my fingers that you have time to throw in an image verification! Or better yet, a virtual laser gun that will shoot spammers in the head through their computer screen when they press the submit button. Too much? ;)

  • The markup Enth will be using in the next version will definitely be more semantic. That’s actually one point that I’m still deciding on, if I will be staying with XHTML or HTML… still no decisions there yet. :)

  • I’ve something to add, also. :)

    I would like to see labels added to the input fields, please, such as on my custom join pages ( Every time I upgrade Enth I go through and recode the join form which can be quite time consuming, but it would make the forms very accessible and even easier to use. Just a thought :)

  • Hi Kya, thanks! I won’t promise these will be in the new Enth, but I appreciate the feedback. :) Right now the biggest priority for me is to get it out the door with the new code rewritten to make it easier to add on to, and to make sure it’s out before PHP4 EOL hits. This might even mean some current features won’t be included in the initial release — it all depends. :)

  • I was randomly thinking of some ideas for things I would love on Enth and decided to write them down. I wasn’t going to share them for some unknown reason but thought I will. Some might be totally silly, but they might have some interest. :)

    – Make it multi user, so people can log in and have different levels. For instance if you wanted to co-own a fanlisting with someone you could create an account for them and set them so they have access to manage certain fanlistings.

    – Manage codes for the site. CodeSort is an amazing script and manages the codes awesomely, but you have to have an addional script installed and if you could take what was great with that script and work it into the framework of Enth (either in your own way, or what already exists) that would be cool. You would also have the ability to say ‘we have 105 codes in 4 categories’ so you could have stats displayed.

    – Affiliate form or approval system. If you could have some type of approval system for affiliates this would just be wonderful. You could have a ‘join’ type of thing, where affiliates enter a form (possibly uploading a code) and you approve or reject them and they are emailed and added to the site and the database.

    – Stop the spam. This is one problem I have a lot of. Spam members harassing the hell out of me. Maybe a verification image needs to be used, or at least adding that feature and having the option to turn it on or not. I think that would stop a lot of nightmares for people. Or even having the option to ‘reject all’ I know you have said this is a bit iffy, but if all options fail it would be good.

    – Owned, Upcoming and Pending Templates. I would like to see the option to be able to edit the owned, upcoming and pending templates in the admin panel, and by this a mean a separate way of being able to display them. This would just be another way to customize it to perfection.

    – KIM section. I am not 100% about this one, but a KIM type of section might be a good idea. You could have a form that would allow people to be added to a list, like some random scripts that suit this purpose. I am not sure how well this would go.

    All done. XP

  • I’d been meaning to write another tutorial at some point — maybe an Enth one would be good for the next one. ;)

  • All good points that I never would have thought of because I never really think about enth that much (which is, imho, the mark of a good program… something that can be used without really having to think too much about it). I might play around with a few things when I have some time and see what I can come up with, but my tweaking abilities only go so far. If I figure out a little more about PHP, I might be able to whip something up, but I’m not holding my breath. Maybe that KIM script I have stashed away will give me some insight on how it works. Hmm. Thanks for the suggestions, though. This all might eventually point me in the right direction (hopefully without screwing anything up… maybe I”ll just use a dummy installation to play with it).

  • Ooooh, I’m so exited what the new Enth will bring, because the ooooooold *ironic laughter* Enth 3 is already perfect and so complex.
    The only thing I would wish is an affiliates crosslisting. F.e. that I can add an affiliate to all of my Star Wars fanlistings at once. KIM would be great also.

    Oh, and maybe it would possible to add the dashboard function to show overdue fanlistings on every site, but at least the members approving site? Because I use that as favourite, so I can approve right away.

    Happy coding!

  • With a bit of modification, using a special country list wouldn’t be too difficult. Only, what happens when someone wants to be on the KIM list for multiple fanlistings you have? There’s no way to have someone listed under two countries. It’s pretty much the same “issue” with just using an additional field and hiding the country. You can use an file to change the additional field into a dropdown box for sure, and change the “Sort members by” field to your additional field name, but you’re still limited to one fanlisting/value for each person who signs up.

  • Wow, I had no idea it was so complicated. :3 If there’s a way to modify the ‘country’ list into a list of fanlistings, that would probably work too, but it would probably be more trouble than it’s worth for everyone. From poking around the enth coding, it probably wouldn’t be the easiest thing to alter because the ‘country’ list would be something different for that specific fanlisting, and I’m not sure if there’s a way to set that up. Then again, I don’t know anything about writing code, so that may not even be an option.

  • KIM lists should be easy to do in Enth as another fanlisting when a feature such as allowing a checkbox in additional fields is done — this has been on my mind for a while now as something I need to implement (useful for favorite movies by an actor in an actor fanlisting, that sort of thing) but haven’t gotten around to (and now it’s moving on to Enth 4.0! whew). There are a number of limitations with that sort of implementation, though — well, not the least of it is because Enth (as it is right now) can’t use checkboxes. LOL XD

  • I’ve looked at a lot of fanlisting scripts, and nothing matches up to enth. The only thing I think of that would be useful would be a “keep in mind” list feature. I’ve got a script for it, but I haven’t set it up yet. I’m sure it’s fine, but I’ve been overly cautious because of the fiasco with the security flaws in another fanlisting script I used a few years back.

  • @Lia: Thanks! I’m glad Enth continues to be useful :) I’m half thinking that by this time (due to my inactivity with Enth and in the fanlistings community in general) Enth would be slowly becoming less useful/important. IT is a fast-paced industry, so it’s possible the useful tools one day would be so-ten-years-ago the next.

    @Hikoto: True, it’s all a matter of what you’re passionate about ;)

  • Well, take it at your own pace, Angela! There’s no rush! ^_^.

    Sometimes I feel that it would be great if I knew PHP, then I could write custom scripts for my sites tailored to my needs, but ahh, I guess I have passions that burn stronger than that desire, so I’m really grateful for having Enthusiast sitting on my server! (:

  • I’m so glad you’ve got your mojo back (er, so to speak) and are working on a new version. I’ve loved enth since I started using it years ago, and I’d never use anything different for my multitude of fanlistings. Thanks for all the hard work you do, you’ve made something really great that I couldn’t function without.

  • @Kya: Thanks!

    @Mosey: Enth3 does work for me well, hence the delay and foot-shuffling before getting a move on with the next version. Plus there’s obviously a bit of learning curve to be overcome, as I’m doing OOP for Enth 4.x — obviously PHP5 will be a requirement. :) But I’m pretty psyched myself at having shiny new things to tinker with, that’s for sure! And, you should try PHP ;) ’tis fun. Hee!

  • Mosey said:

    To put this cheesily – you are uber cool! :) I’m very glad to read the news about Enthusiast 4.0 being in the works, not because I’m not satisfied with the 3.0 series (it works just the way I love it!) but because of the new PHP5 being so amazingly amazing? Although I avidly follow tech blogs and bone up on the latest developments of WordPress, freewares etc. I still have little-to-no-coding experience beyond HTML/CSS, but it’s always exciting to read that a good yet dormant project has become active again!
    Maybe one day I’ll find that passion to learn PHP properly! If not, at least design a WordPress theme properly! :D

  • Good luck! I know whatever you create is going to be amazing and I can’t wait, but I am happy to be patient because you do have many other things that are important. That is the one thing about having a passion or true love for something, it seems to bend through space and time. You can spend hours on end doing things for your desires and you don’t even notice a second has passed.

    Good luck! :)