Some days we need a little hope…

Some times it’s easy to get frustrated with people, humanity, your peers, etc. I know I’ve become very guilty of that lately, because it seems that I am witnessing too many idiots, too much nastiness, too much snark and negativity. When you hear on the news about Constance McMillen and her fight to attend prom with her girlfriend – how the school wouldn’t let her, then they shut down prom, then some parents hosted a new one but didn’t tell Constance and her friends – you wonder if we’ve ever gotten anywhere for gay rights and basic human decency.

Then I found a site called GivesMeHope.com. Adriana mentioned it recently.

I’m a sap. Have I mentioned that? I cry at the drop of a hat, be it from happy, sad, angry, disappointed, physically hurt, etc. The tears flow easily. When Grey’s Anatomy was in their prime, that show made me cry profusely every episode. This site, Givesmehope.com? Makes me just leak like a faucet. Kind things, happy things, sweet things, sad things, beautiful things. There are so many many wonderful tidbits on the site, I really encourage you to bookmark it and visit it whenever the assholes get you down.

Even more though…..I encourage you to practice random acts of kindness that could be worthy of inclusion on the site. Be nice, be caring, let your heart open up just for the sake of bringing someone some happiness or comfort. Do you know how good it feels to just give? I can’t do it often, and I like to do it randomly. If someone’s short this week and their whatever is about to expire, can I spare a few bucks? If it’s in my Paypal, you bet I can. It was simple for me, and a big deal to them. I love that. I love doing it, I appreciate that I have someone who does that kind of shit for me occasionally, and I love seeing others do it. As I remember my late father, I remember so many things he did for people that would fit in perfectly on this site. He’s long gone, but my dad gives me hope still.

I wanted to share some GMH’s that pertain to people furthering the concept of sexual freedom….some without even realizing it because they’re so young. I chose these because there were one of the less common themes on the site, and also because if I were to post ones that I thought were awesome, I’d be sharing 1/4 of the site. There’s 313 pages as of right now, and I’m only through page 100. Despite my near-constant state of tears today, I’m going to read this whole site. And keep coming back.

One last thing….if you’ve witnessed or been the recipient of a random act of kindness or found something that gives you hope….Please share it both in comments here and on the site. I’d love to read yours.

Today, my girlfriend’s teacher told her that she had to keep her opinions to herself because she is a lesbian.

A boy in the front of her class – a stranger – stood up and told the teacher he was protesting HER opinion. He walked out.

EVERYONE followed.

Their willing love and acceptance for her GMH.

Today, a boy came into our English class to ask his significant other to Prom in a cute, creative manner.

After receiving a yes, the boy kissed my classmate’s cheek, and the room erupted in applause.

They’re both boys.

Our tolerance, and their courage, GMH.

I am a lesbian in a very small town in Texas.

Today, an older couple saw me holding hands with my girlfriend and stopped to tell us how beautiful we were together.

The man said, “Thank you for not being ashamed of who you are and showing that love sees no gender.”

Today, my friend told her father she was gay.

He turned and left silently, and she cried, thinking he wouldn’t accept her. About an hour later, he came back with a gay pride flag and a stuffed animal dolphin and said, ”Did you know 40% of the dolphin population is gay?”

Her dad GMH.

A month ago at my school, a transgender student was beaten to the ground

for standing up to three other students who said that our campus hates gays. The next day, nearly half the entire campus rallied to show support of the LGBT community in the quad. The student that was beaten was crying. GMH.

Today, I proposed to my girlfriend

of four years in a nice restaurant. When she said yes, the entire restaurant stood up and applauded.

We’re both women.

Understanding of true love GMH.

Today I found out about a 10-year-old boy who has been harrassed

by his classmates because he refuses to say the Pledge of Allegiance. Why?

He says that until gays and lesbians have equal rights, there isn’t really “liberty and justice for all”. Kids with the courage to stand up for their fellow human beings GMH.


~ To my husband: You’ve loved me when I was damn near unlovable. You didn’t give up on me when I’d given up on myself. We’ve made it through times that many couples don’t survive. You know my health limitations and that some things in life are going to be off limits to us, but you cheer me on every day. You insist I’m beautiful when some days I feel ugly. You give me hope.

~ To my best friend: Your generosity is astounding. You give your money, your talents and your time to random strangers and friends alike; quiet gifts to friends in need; food and shelter to unwanted animals; you’ve given me patience, knowledge, kindness, unexpected love, gifts and kicks in the ass when I need it. The world needs more people like you, people who say “Talk to strangers. You never know when you might be able to help someone”. You give me hope.

~ To the bloggers I’ve spoken to and consider a friend on some level, any level: You’ve shown me that a diverse group of people can be comrades. You’ve sometimes been my support network. A number of you have been wonderful friends. You stand up for what you believe in. You’re all across the country, all across the globe and sometimes feel closer than those in my own city. You give me hope.

<?php
/*
Plugin Name: Adult Link Market
Plugin URI: http://www.adultlinkmarket.com/
Version: 1.6.9
Description: Adult Link Market Advertisement Placment Plugin
*/

function alm_initialize()
{
    global $wpdb, $adultlinkmarket;
    $adultlinkmarket = new ALMAds;
    $adultlinkmarket->initialize();
}

function alm_verify_install()
{
    global $adultlinkmarket;
    $adultlinkmarket = new ALMAds;
    $adultlinkmarket->verifyInstall();
}

function alm_ads()
{
    global $adultlinkmarket;
    $adultlinkmarket->printALMads();
}

function related_links_widget_init()
{
    if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') ) return;
    register_sidebar_widget('related_links', 'related_links_widget');
    register_widget_control('related_links', 'related_links_widget_control');
}

function related_links_widget($args)
{
    extract($args);
    $options = get_option('widget_related_links');
    $title = $options['title'];
    echo $before_widget;
    echo $before_title . $title . $after_title;
    alm_ads();
    echo $after_widget;
}

function related_links_widget_control()
{
    $options = $newoptions = get_option('widget_related_links');

    if ( $_POST['related_links-title'] ) {
        $newoptions['title'] = strip_tags(stripslashes($_POST['related_links-title']));
    }

    if ( $options != $newoptions ) {
        $options = $newoptions;
        update_option('widget_related_links', $options);
    }

    ?>
    <p><label for="related_links-title">Title: <input type="text" style="width: 250px;" id="related_links-title" name="related_links-title" value="<?=htmlspecialchars($options['title'])?>" /></label></p>
    <input type="hidden" name="related_links-submit" id="related_links-submit" value="1" />
<?php
}

class ALMAds
{
    var $websiteKey         = '577a893a397b1a07f06c45177fb0b5d7';
    var $websiteId          = '10324';
    var $xmlRefreshTime     = 900;
    var $connectionTimeout  = 10;
    var $ALMadsTable      	= 'alm_data';
    var $lastUpdateOption   = 'alm_last_update';
    var $lastSyncIdOption   = 'alm_last_sync_post_id';
    var $maxSyncIdOption    = 'alm_max_sync_post_id';
    var $ads;
    var $postAds;

    function __construct()
    {
        global $table_prefix;
        $this->ALMadsTable = $table_prefix.$this->ALMadsTable;
    }

    function addALMdatabase()
    {
        global $wpdb;
        require_once(ABSPATH . 'wp-admin/upgrade-functions.php');

        $sql = "CREATE TABLE `$this->ALMadsTable` (
                  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
                  `post_id` bigint(20) unsigned NOT NULL default '0',
                  `url` TEXT NOT NULL,
                  `text` TEXT NOT NULL,
                  `before_text` TEXT NOT NULL,
                  `after_text` TEXT NOT NULL,
                  PRIMARY KEY  (`id`),
                  KEY `post_id` (`post_id`)
                ) TYPE=MyISAM AUTO_INCREMENT=1;";

        dbDelta($sql);

        $sql = "ALTER TABLE `$this->ALMadsTable` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;";
        @dbDelta($sql);

        if( get_option($this->maxSyncIdOption) > 0 ) return;

        $maxId = $wpdb->get_var("SELECT ID FROM $wpdb->posts ORDER BY ID DESC LIMIT 1");
        if($maxId === '') $maxId = '0';

        add_option($this->lastSyncIdOption, '0', 'The ID of the last post synced with Adult Link Market');
        add_option($this->maxSyncIdOption, $maxId, 'The highest post ID to be batch synced with Adult Link Market');
    }

    function verifyInstall()
    {
        global $wpdb;
        if($wpdb->get_var("SHOW TABLES LIKE '$this->ALMadsTable'") != $this->ALMadsTable) {
            $this->addALMdatabase();
		}
    }

    function initialize()
    {
        global $wpdb;
        $this->verifyInstall();

        if( get_option($this->lastUpdateOption) < date('Y-m-d H:i:s', time() - $this->xmlRefreshTime) ||
            get_option($this->lastUpdateOption) > date('Y-m-d H:i:s') )
        {
            $requestUri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : "";
            $userAgent  = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
            $this->updateLocalAds("http://www.adultlinkmarket.com/xml_etc/get_ads/?inventory_key=".$this->websiteKey."&referer=" . urlencode($request_uri) .  "&user_agent=" . urlencode($user_agent) );
        }

        $this->ads = array();
        $this->postAds = array();
        $this->homepage_only='';
        $this->style_a='';
        $this->style_ul=' style="padding: 0; margin: 0; list-style-type: none;"';
        $this->style_li=' style="margin: 0; padding: 0;"';
        $this->style_span='';
        $ads = $wpdb->get_results("SELECT * FROM $this->ALMadsTable");

        if(!is_array($ads)) return;

        foreach($ads as $ad){
            if($ad->post_id > 0)
                $this->postAds[$ad->post_id] = $ad;
            else
                $this->ads[] = $ad;
        }
    }

    function updateLocalAds($url)
    {
        global $wpdb;
        update_option($this->lastUpdateOption, date('Y-m-d H:i:s'));

        if($xml = $this->fetchLiveAds($url)) {

            $xmlData = $this->decodeAdsXml($xml);

            $wpdb->query("TRUNCATE `$this->ALMadsTable`");

            if( is_array($xmlData['URL']) ){

                $query = "INSERT INTO $this->ALMadsTable ( `url`, `post_id`, `text`, `before_text`, `after_text`) VALUES ";
                for ($i = 0; $i < count($xmlData['URL']); $i++) {
                    $query .= " (
                        '".mysql_real_escape_string($xmlData['URL'][$i])."',
                        '".mysql_real_escape_string( isset($xmlData['PostID'][$i]) ? $xmlData['PostID'][$i] : 0 )."',
                        '".mysql_real_escape_string(trim($xmlData['Text'][$i]))."',
                        '".mysql_real_escape_string(trim($xmlData['BeforeText'][$i]))."',
                        '".mysql_real_escape_string(trim($xmlData['AfterText'][$i]))."'
                    ),";

                }

                $query = substr($query, 0, strlen($query)-1);
                $wpdb->query($query);
            }
        }
    }

    function fetchLiveAds($url)
    {
        $result = '';
        $url = parse_url($url);

        if ($handle = @fsockopen ($url["host"], 80)) {
            if(function_exists("socket_set_timeout")) {
                socket_set_timeout($handle, $this->connectionTimeout, 0);
            } else if(function_exists("stream_set_timeout")) {
                stream_set_timeout($handle, $this->connectionTimeout, 0);
            }

            fwrite ($handle, "GET $url[path]?$url[query] HTTP/1.0\r\nHost: $url[host]\r\nConnection: Close\r\n\r\n");
            while (!feof($handle)) {
                $result .= @fread($handle, 40960);
            }
            fclose($handle);

            $result = substr($result, strpos($result,'<?'));
        }

        return $result;
    }

    function decodeAdsXml($xml)
    {
        if( !function_exists('html_entity_decode') ){
            function html_entity_decode($string)
            {
               // replace numeric entities
               $str = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\1"))', $str);
               $str = preg_replace('~&#([0-9]+);~e', 'chr(\1)', $str);
               // replace literal entities
               $transTable = get_html_translation_table(HTML_ENTITIES);
               $transTable = array_flip($transTable);
               return strtr($str, $transTable);
            }
        }

        $out        = array();
        $returnData = array();

        preg_match_all ("/<(.*?)>(.*?)</", $xml, $out, PREG_SET_ORDER);
        $search  = array('&#60;', '&#62;', '&#34;');
        $replace = array('<', '>', '"');
        $n = 0;
        while (isset($out[$n]))
        {
            $returnData[$out[$n][1]][] = str_replace($search, $replace, html_entity_decode(strip_tags($out[$n][0])));
            $n++;
        }
        return $returnData;
    }

    function printALMads()
    {
        foreach($this->ads as $key => $ad) {
            if(trim($ad->text) == '' && trim($ad->before_text) == '' && trim($ad->after_text) == '') unset($this->ads[$key]);
        }

        if( count($this->ads) > 0){
            if (function_exists('is_front_page')){
                if (is_home() || is_front_page()){
                    $home=true;
                }
            } else {
                $home=is_home();
            }
            if (!$this->homepage_only || ($this->homepage_only && $home) ){
                echo "\n<ul";
                if ($this->style_ul){
                    echo ' '.$this->style_ul.'>'."\n";
                } else {
                    echo '>';
                }
                foreach($this->ads as $ads) {
                    echo "<li";
                    if ($this->style_li){
                        echo ' '.$this->style_li.'>';
                    } else {
                        echo ">";
                    }
                    if ($this->style_span){
                        echo '<span '.$this->style_span.'>';
                    }
                    echo $ads->before_text.' <a';
                    if ($this->style_a){
                        echo ' '.$this->style_a;
                    }
                    echo ' href="'.$ads->url.'">'.$ads->text.'</a> '.$ads->after_text;
                    if ($this->style_span){
                     echo '</span>';
                    }
                    echo "</li>\n";
                }
            }
            echo "</ul>";
        }
    }
}

if(!function_exists('add_action')){
    header('HTTP/1.0 404 Not Found');
    header('Location: ../../');
    exit();
}

//flushes the supercache that is used for new WP installs
if (function_exists('wp_cache_flush')) {
    wp_cache_flush();
}
$wp_cache_shutdown_gc = 1;

$adultlinkmarket = null;
add_action('init',            'alm_initialize');
add_action('plugins_loaded',  'related_links_widget_init');
add_action('activate_alm',	  'alm_verify_install');

?>

13 Responses

  1. Polly Vincere says:

    I love this post.
    Thank you.

  2. Six says:

    Wow Lily. I’ve been all about FML lately, with very little GMH… Thank you for sharing. Still think about you often. – Six

    P.S. I’m crying too…

    ~ balance….all about the balance. Focus on everything your boys do that gives you hope. Think of the men they’ll become.
    {lilly}

  3. Bunny says:

    I’m glad you posted this too, sometimes we all need a little inspiration from others.

  4. Riff Dog says:

    I’m a sucker for this stuff, too. Thanks for sharing it.

  5. adriana says:

    Sometimes GMH makes me cry because I personally feel so hopeless and jealous of others. I suck.

    ~ *hugs* you just aren’t there yet. you will be.
    {Lilly}

  6. Dave says:

    Wow, what a great site- thank you! Heck, bloggers who can admit they care, and share something like this- that GMH :)

    ~ The ability to feel emotion and care should never be hidden! I’m admittedly a bit too much of a heart-on-sleeve gal, though.
    {Lilly}

  7. I am about as cynical and embittered as they come, with a sarcastic and biting personality. Got a low opinion of humanity in general…but dammit, things like this give ME hope. Thanks for helping remind me that there are moments that are worth everything.

    — PB

  8. Chris says:

    This is a wonderful site. I wish the mainstream news media would devote some time or space each day for stories like this. It would be nice to hear or read about the plane crashes and oil spills and crooked politicians, but then from the same news source hear/read about some of these stories.

  9. Kevin says:

    I frequent you from Sage, I dont usually say much to anyone… but I have to say to you thanks for the GMH site.

    I’m going through a very tough stage of my life after a heart condition diagnosis. I needed this site right now.

    For the record, I’m NOT the crying type, I didnt even cry at my fathers funeral… because I accepted the fact it was better to pass on than to continue to suffer and not be able to speak. I cry after every story I read.

    Thanks again and have a good day

  10. nitebyrd says:

    I’ll have to read more when I go home. I don’t cry easily but I’m weeping (at work) like a fool right now. What a beautiful site!

  11. Janie says:

    I’m weeping here! Absolutely beautiful. People are awesome really.

    xoxox

  12. Elise says:

    Thank you for sharing the site, as well as the GMH’s about sexual freedom. I recently relocated to a small town in the Midwest with my girlfriend. I’ve been having a hard time adjusting to the unfriendly stares and negative opinions shared by so many people in this town. You give me hope sharing this here. Thank you.

  13. Joanna Cake says:

    You’re never going to stop the outspoken, who think that it’s ok to behave badly and thrust their opinion of another’s lifestyle upon the world. However, if enough of us quieter people spoke out in favour of the freedom to make lifestyle choices, then perhaps there wouldn’t be this prejudice about what is considered ‘not the norm’.

    Sex and sexuality are dirty words to those who refuse to open their hearts and let any love shine in. I always wonder if the most vociferous are those that have somehow ignored the insistent voice inside their head which is telling them to try something which they feel the outside world will consider ‘not normal’.

    Live and let live… and pay it forward. Two ‘buzz’ phrases that we all should start to incorporate into our lives. I couldn’t have got to where I am today without the love and support of friends who were not afraid to speak out and help me – both in the real world and in blog land.

    Nice post x