Archive for October, 2010|Monthly archive page

Multiple Distribution Lists

Friday, October 22nd, 2010

Omega Fraternal released improved email distribution list management today. Chapters are now able to manage multiple email distribution lists to fine tune communication to members.

Omega Fraternal still has the ability to manage your main distribution list as well as auto-joining new members to the default list. For those discretionary lists however, membership administrators can specify which distribution lists each member is a subscriber to.

From the front-end interface, members can view all of the distribution lists the Chapter utilizes and who is a subscriber to each list.

Just as before, when a membership manager or a member updates an email address, that changes is automatically rippled and reflected throughout all of the distribution lists.

We’re really excited about this release because this is just another small step in making Omega Fraternal the premier fraternity and sorority management system.

PHP Twitter Feed

Tuesday, October 19th, 2010

Here are two simple functions to display Twitter feeds on your website using PHP. The twitter_feed() function pulls the feed from Twitter RSS and returns it as a variable. This function also stores the feed in a database where it can be called in cases where the Twitter RSS feed is unavailable.

//Twitter Feed
function twitter_feed($username, $rss) {
  $hostname_connection = "db_hostname";
  $database_connection = "db_database";
  $username_connection = "db_username";
  $password_connection = "db_password";
  $connection = mysql_pconnect($hostname_connection, $username_connection, $password_connection) or die(mysql_error());
  
  $twitter_feed = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td class="content_twitter" valign="baseline"><a href="http://twitter.com/'.$username.'" target="_blank"><img src="twitter-follow-me.png" alt="Twitter" border="0" align="right"></a>';
  
  $feedURL = $rss;
  $doc = new DOMDocument();
  if($doc->load($feedURL)) {
    $arrFeeds = array();
    foreach ($doc->getElementsByTagName('item') as $node) {
      $itemRSS = array ( 
        'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
        'pubDate' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue
      );
      array_push($arrFeeds, $itemRSS);
    }
    
    $limit = 5;
    for($x=0; $x<$limit; $x++) {
      $title = str_replace('bavotasan: ', '', $arrFeeds[$x]['title']);
      $string = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a class=\"twitter_link\" href=\"\\0\" target=\"_blank\">\\0</a>", $title); 
      $pattern = '/[#|@][^\s]*/';
      preg_match_all($pattern, $string, $matches);    
      
      foreach($matches[0] as $keyword) {
        $keyword = str_replace(")", "", $keyword);
        $link = str_replace("#", "%23", $keyword);
        $link = str_replace("@", "", $keyword);
        if(strstr($keyword, "@")) {
          $search = '<a href="http://twitter.com/'.$link.'" target="_blank">'.$keyword.'</a>';
        }
        else {
          $link = urlencode($link);
          $search = '<a href="http://twitter.com/#search?q='.$link.'" target="_blank">'.$keyword.'</a>';
        }
        $string = str_replace($keyword, $search, $string);
      }
      $length = strlen($string);
      $string = substr($string, 15, $length);
      $twitter_feed .= '<a href="http://twitter.com/'.$username.'" target="_blank">@'.$username.'</a>: '.$string.'<div class="twitter_time">'.twitter_time($arrFeeds[$x]['pubDate']).' via Twitter</div><br />';
    }
    
    $twitter_feed .= '</td></tr><tr><td align="right"><a href="http://twitter.com/'.$username.'" target="_blank">..::Follow Us!</a></td></tr></table>';
    
    $updateSQL = sprintf('UPDATE twitter SET details="'.$twitter_feed.'" WHERE account="'.$username.'"');

    mysql_select_db($database_connection, $connection);
    mysql_query($updateSQL, $connection) or die(mysql_error());
  }
  
  else {
    mysql_select_db($database_connection, $connection);
    $query_twitter = sprintf('SELECT * FROM twitter WHERE account = "'.$username.'"');
    $twitter = mysql_query($query_twitter, $connection) or die(mysql_error());
    $row_twitter = mysql_fetch_assoc($twitter);
    $totalRows_twitter = mysql_num_rows($twitter);
    
    $twitter_feed = $row_twitter['details'];
  }
  
  return $twitter_feed;
}

The twitter_time() function takes the RSS time and converts it to human readable current server time.

//Twitter Time
function twitter_time($rss_time) {
  $time = date('Hm', strtotime($rss_time));
  $date = date('m/d/Y', strtotime($rss_time));
  
  if($date == system_date()) {
    if(system_time() - $time < 60) {
      $time_result = system_time() - $time;
      if($time_result <= 1) {$time_display = 'about a minute ago';}
      else {$time_display = $time_result.' minutes ago';}
    }
    else {
      $time_result = round(((system_time() - $time) / 60), 0);
      if($time_result == 1) {$time_display = 'about '.$time_result.' hour ago';}
      else {$time_display = 'about '.$time_result.' hours ago';}
    }
  }
  else {
    $time_result = date_difference($date, system_date());
    if($time_result == 1) {$time_display = $time_result.' day ago';}
    else {$time_display = $time_result.' days ago';}

    if($time_result > 7) {
      $date_explode = explode('/', $date);
      if($date_explode[2] == date('Y')) {
        $time = date('g:i A', strtotime($time));
        $date = date('M jS', mktime('00', '00', '00', $date_explode[0], $date_explode[1], $date_explode[2]));
        $time_display = $time.' '.$date;
      }
      else {
        $time = date('g:i A', strtotime($time));
        $date = date('M jS, Y', mktime('00', '00', '00', $date_explode[0], $date_explode[1], $date_explode[2]));
        $time_display = $time.' '.$date;
      }
    }
  }
  
  return $time_display;
}

Usage:

echo twitter_feed('your Twitter username', 'the URL to your Twitter RSS feed page');