Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #11  
Old 09-25-2012, 07:46 PM
RedTurtle's Avatar
RedTurtle RedTurtle is offline
 
Join Date: May 2006
Location: California
Posts: 205
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks a lot kh99.

Definitely looking forward to your next version of it.

And I'm sorry about the PM, I don't know how but somehow didn't see your notice about it in your signature. Won't happen again!

--------------- Added [DATE]1348668746[/DATE] at [TIME]1348668746[/TIME] ---------------

Hi guys,

Based somewhat off of kh99's previous code I went ahead and wrote some new code for my purposes. Not sure if anyone else would find this useful or not but I figured I would share it just in case.

This code does the following:
  1. Automatically capitalizes first letter of every word.
  2. Ignores user defined small words (a, the, of, and, etc).
  3. Ignores user defined acronyms (USA, LOL, BRB, etc) and will capitalize them if they are not entered in all caps.
  4. Allows you to define a max length for capitalized words. If a thread has a word in all caps longer than the max length, it will change it from all caps to only capitalizing the first letter of that word. Prevents "shouting" and also helps cover any acronyms that were not specifically declared in the capital words list by ignoring any words entered in all caps that are less than the defined max length.
  5. Correctly handles punctuation marks and having a punctuation mark at the end of a word on the capital words list won't mess it up. 'USA!' will match 'USA' on the list.

One thing to be careful about -- enter all of your words in lowercase.

I hope this is helpful to someone else!

Here's the code:

[Look at next post for code]

Edit: If someone could help make it so that I could read an external file for the capitalized words list, that might be a neater solution. Not exactly sure how to go about doing that.

Edit #2: Ok it looks like there is an issue I'm having trouble getting rid of. If the letter 'i' is entered in lowercase such as in the sentence "i really like cake with a tiny bit of icing" it will capitalize the letter 'i' which it should do but then it will also capitalize every other instance of the letter 'i' anywhere it occurs. The output will be: "I Really LIke Cake WIth a TIny BIt of IcIng".
Reply With Quote
  #12  
Old 09-27-2012, 12:56 AM
RedTurtle's Avatar
RedTurtle RedTurtle is offline
 
Join Date: May 2006
Location: California
Posts: 205
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok finally got some more time to look at the code and have it working now:

Using ucwords now instead of my previous method. Let me know if you have any issues with it.

PHP Code:
if (is_subclass_of($this'vB_DataManager_ThreadPost') && is_array($this->validfields['title']))
{
    global 
$exclude_words$capital_words$max_length ;
    
$exclude_words = array("the","a","of","is"); // Exclude analyzing these words
    
$capital_words = array("brb","lol"); // Capital exclusives (leave in lowercase in array)
    
$max_length 5// Maximum word length, anything over is case-lowered
    
    
$this->validfields['title'][VF_CODE] = '
        global $exclude_words, $capital_words, $max_length ;
        $retval = $dm->verify_title($data);

        $words = explode(" ",$data);
        
        foreach ($words as $word) {
 if (!in_array(strtolower($word),$exclude_words))
   {
     if(in_array(preg_replace("/[^a-zA-Z]/","",strtolower($word)),$capital_words))
     $newWord[] = strtoupper($word);
     elseif(strlen($word) >=$max_length && !in_array(strtolower($word),$capital_words)) $newWord[] = ucwords(strtolower($word));
     else $newWord[] = ucwords($word);
   }
 else $newWord[] = strtolower($word);
}

                    
                    $data = implode(" ",$newWord);

        return $retval;
    '
;

Reply With Quote
  #13  
Old 10-15-2013, 11:24 AM
CAG CheechDogg's Avatar
CAG CheechDogg CAG CheechDogg is offline
 
Join Date: Feb 2012
Location: Riverside, California USA
Posts: 1,080
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Great plugin here you guys ! I have one question for you kh99 ...

How could I use this to make sure that only one acronym in any posts created is always capitalized, i.e., when someone post a reply or a new thread and in the message they use the acronym (usa) and you always wanted it to be (USA), is this possible?
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:06 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03865 seconds
  • Memory Usage 2,193KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (3)post_thanks_box
  • (3)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit_info
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete