onqcheck = strpos(strtolower($_SERVER['HTTP_USER_AGENT']), "konqueror"); // If global debugging is enabled or the browser is konqueror, // we use uncompressed JavaScript if ($debug || $konqcheck) { $js_swf = 'swfobject-uncompressed.js'; $js_avr = 'avreloaded-uncompressed.js'; $js_wmv = 'wmvplayer-uncompressed.js'; } if ($needsl) { JHTML::script('silverlight.js', $this->_rlocr); JHTML::script($js_wmv, $this->_rlocr); } if ($needswfo) { JHTML::script($js_swf, $this->_rlocr); } // Handle special hardcoded tags (avrpopup, avrbutton) $ret = $this->_handleSpecial($text, $needavr); if ($needavr) { JHTML::script($js_avr, $this->_rlocr); } return $ret; } function _handleSpecial($text, &$needavr) { $special = array('avrpopup', 'avrbutton'); foreach ($special as $key) { // Speedup non-matching case if (strpos($text, '{'.$key) !== false) { // The actual regex stuff $re = '#{'.$key.'(\s+[a-z]+\s*=\s*(?:"|")[^}]*(?:"|"))*}([^{]+){/'.$key.'}#m'; if (preg_match_all($re, $text, $matches, PREG_PATTERN_ORDER) > 0) { $i = 0; $code = ''; $needavr = 1; switch ($key) { case 'avrpopup': $code = '@CODE@'; break; case 'avrbutton': $code = ''; break; } foreach ($matches[0] as $match) { $parms = JString::trim($this->_htsdecode($matches[1][$i])); $vcode = $matches[2][$i]; $tcfg = array('screenmode' => ''); if (JString::strlen($parms)) { $dummy1 = ""; $dummy2 = ""; $this->_parseParams($parms, $tcfg, $dummy1, $dummy2); } $repl = $this->_buildCode($vcode, $tcfg, $code); $text = str_replace($match, $repl, $text); $i++; } } } } return $text; } function _renderToDB($code, $cfg, $db) { $menus =& JSite::getMenu(); $amenu =& $menus->getActive(); $itemid = $amenu->id; $w = $cfg['width']; $h = $cfg['height']; $divid = $cfg['divid']; $query = "REPLACE INTO #__avr_popup VALUES($itemid,'". $divid."','".$db->getEscaped($code)."',". $w.','.$h.',NOW())'; @$db->setQuery($query); @$db->query(); $url = 'index.php?option=com_avreloaded&view=popup&Itemid='.$itemid.'&divid='.$divid; $code = ''; JHTML::script('modal.js'); JHTML::stylesheet('modal.css'); JHTML::stylesheet('avrmodal.css', 'plugins/content/avreloaded/'); $doc =& JFactory::getDocument(); $doc->addScriptDeclaration( "window.addEvent('domready', function(){SqueezeBox.initialize({});});"); return $code; } /** * Parse a string, containing multiple parameters, each in the form * key="value" and assign them to an assoziative array. * * @param parms * @param cfg * @param start * @param end * * @access private */ function _parseParams($parms, &$cfg, &$start, &$end) { $legacy_override = 0; $style_override = ''; if (preg_match_all('#\s*([a-z]+)\s*=\s*"([^}"]*)"\s*#', $parms, $matches)) { $i = 0; foreach ($matches[1] as $key) { switch ($key) { case 'img': $cfg[$key] = $this->_adjustLoc($matches[2][$i], 1); break; case 'bgcolor': $cfg[$key] = $this->_fmtColor($matches[2][$i], '#'); break; case 'pbgcolor': case 'pfgcolor': case 'phicolor': case 'psccolor': $cfg[$key] = $this->_fmtColor($matches[2][$i], '0x'); break; case 'autostart': case 'usefullscreen': case 'showdigits': case 'showicons': case 'showstop': case 'showdownload': case 'shownav': case 'showeq': case 'searchbar': $cfg[$key] = $this->_fmtBool($matches[2][$i]); break; case 'style': $style_override = $matches[2][$i]; break; case 'legacy': $legacy_override = 1; $cfg[$key] = $this->_fmtBool($matches[2][$i]); break; default: $cfg[$key] = $matches[2][$i]; break; } $i++; } $container = 'span'; if ($legacy_override) { if ($cfg['legacy'] == 'true') { $container = 'div'; if ($style_override) { $style = ' style="'.$style_override.'"'; } else { $style = ' style="clear:both; text-align: '.$cfg['valign'].'; margin-top: '. $cfg['tmargin'].'px; margin-bottom: '.$cfg['bmargin'].'px;"'; } } $start = sprintf($this->_beg, $this->_vtag, $container, $style, $cfg['avcss'], $container); $end = sprintf($this->_end, $this->_vtag); } else { if ($style_override) { $start = sprintf($this->_beg, $this->_vtag, $container, ' style="'.$style_override.'"', $cfg['avcss'], $container); } } } } /** * Replace variables in a player template * For every @NAME@ tag, lookup the lowercaes NAME in * the supplied config array and - if found - replace it by the stored * value. Furthermode, If a sequence @IF(NAME)@..content..@/IF@ is * found, replace that sequence with an empty string, if the variable * specified by lowercase NAME is unset or not 'true'. Similar, if * @IFS(NAME)@..content..@/IFS@ is found, replace that sequence with * an empty string, if the variable specified by lowercase NAME is unset. * * @param code The content of the element's tag. * @param cfg The current config to be used. * @param pltmpl The player template to be used. * * @return string The player template with all matching patterns replaced. * * @access private */ function _buildCode($code, $cfg, $pltmpl) { $matches = null; if ((!isset($cfg['displayheight'])) && (!isset($cfg['displaywidth']))) { // If the user has overridden displayheight or displaywidth already // from within the tag, don't touch it! switch ($cfg['screenmode']) { case 'coverlay': $cfg['displayheight'] = $cfg['height']; break; case 'plbottom': $cfg['displayheight'] = $cfg['height'] - ($this->_ctrlheight + $cfg['plsize']); break; case 'plright': $cfg['displaywidth'] = $cfg['width'] - $cfg['plsize']; break; case 'floatcplright': $cfg['displayheight'] = $cfg['height']; $cfg['displaywidth'] = $cfg['width'] - $cfg['plsize']; break; } } // First handle conditionals ... if (preg_match_all('#@IF\((!?[A-Z]+)\)@(.+)@/IF@#sU', $pltmpl, $matches, PREG_PATTERN_ORDER)) { $i = 0; foreach ($matches[0] as $match) { $key = strtolower($matches[1][$i]); $neg = (strpos($key, '!') === 0); if ($neg) { $key = ltrim($key, '!'); } $inner = ''; if ($neg xor ((isset($cfg[$key])) && ($this->_fmtBool($cfg[$key]) == 'true'))) { $inner = $matches[2][$i]; } $pltmpl = str_replace($match, $inner, $pltmpl); $i++; } } if (preg_match_all('#@IFS\((!?[A-Z]+)\)@(.+)@/IFS@#sU', $pltmpl, $matches, PREG_PATTERN_ORDER)) { $i = 0; foreach ($matches[0] as $match) { $key = strtolower($matches[1][$i]); $neg = (strpos($key, '!') === 0); if ($neg) { $key = ltrim($key, '!'); } $inner = ''; if ($neg xor (isset($cfg[$key]))) { $inner = $matches[2][$i]; } $pltmpl = str_replace($match, $inner, $pltmpl); $i++; } } // ... then handle regular replacements if (preg_match_all('#@([A-Z]+(?:![dy])?)@#', $pltmpl, $matches, PREG_PATTERN_ORDER)) { $i = 0; foreach ($matches[0] as $match) { $key = strtolower($matches[1][$i]); $boolfmtoverride = null; if (strpos($key, '!d')) { $boolfmtoverride = 'ds'; $key = str_replace('!d', '', $key); } if (strpos($key, '!y')) { $boolfmtoverride = 'yn'; $key = str_replace('!y', '', $key); } if (isset($cfg[$key])) { $val = $cfg[$key]; if ($boolfmtoverride) { $val = $this->_fmtBool($val, $boolfmtoverride); } $pltmpl = str_replace($match, $val, $pltmpl); } $i++; } } return str_replace('@CODE@', $code, $pltmpl); } /** * Format a boolean value * * @param value The input to be formatted. * Possible input formats: * - A numeric (int or string) (0 == false, !0 == true) * - A string in the form 'true' or 'false' * @param fmt The desired output format: * 'bs' return a string 'true' or 'false' * 'ds' return a string '1' or '0' * 'yn' return a string 'yes' or 'no' * * @return string * @access private */ function _fmtBool($value, $fmt = 'bs') { if (is_numeric($value)) { $value = ((1 + $value) != 1); } if (is_string($value)) { $value = (strtolower($value) == 'true'); } switch ($fmt) { case 'bs': // return boolean string return ($value) ? 'true' : 'false'; break; case 'ds': // return decimal string return ($value) ? '1' : '0'; break; case 'yn': // return yes/no string return ($value) ? 'yes' : 'no'; break; } } /** * Retrieves the version of the CURL extension, if any. */ function _curl_version() { if (is_array($curl = curl_version())) { $curl = $curl['version']; } elseif (substr($curl, 0, 5) == 'curl/') { $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5)); } elseif (substr($curl, 0, 8) == 'libcurl/') { $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8)); } else { $curl = 0; } return $curl; } /** * Quotes a regex (puts delimiters around it). */ function _quoteRegex($rx) { for ($i = 1; $i < 256; $i++) { $c = chr($i); if (strpos($rx, $c) === false) { return $c.$rx.$c; } } return null; } /** * Retrieves the real url of a media resource. * First, the content of a given url is fetched, then * this content is matched against a given regex in order * to retrieve a fragment which contains the actual media * url. * * @param robj A ripper parameter object. * * @return An array, containing the extracted media URL at index 0, * followed by an arbitrary number of additional backreferences. * @access private */ function &_ripper(&$robj) { $url = str_replace(' ', '%20', $robj->url); $ret = array(''); $resp = ''; if (function_exists('curl_init')) { // We preferably use cURL, because that supports // a proxy out of the box. In your apache config, // simply set the environment variable http_proxy // to host:port in order to use it. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'AllVideos Reloaded'); if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(plgContentAvreloaded::_curl_version(), '7.15.2', '>=')) { curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); } $proxy = getenv('http_proxy'); if ($proxy !== false) { curl_setopt($ch, CURLOPT_PROXY, $proxy); } if (!($resp = curl_exec($ch))) $resp = ''; curl_close($ch); } else if (ini_get('allow_url_fopen') == '1') { // try fallback to file_get_contents $resp = @file_get_contents($url); } if (strlen($resp)) { if ($robj->flags & 1) { $resp = urldecode($resp); } $resp = plgContentAvreloaded::_htsdecode($resp); $regex = plgContentAvreloaded::_quoteRegex($robj->regex); if (empty($regex)) { plgContentAvreloaded::_err(JText::sprintf('ERR_MATCH_URL', htmlspecialchars($url), htmlspecialchars($resp), htmlspecialchars($robj->regex))); return $ret; } if (preg_match($regex, $resp, $matches)) { array_shift($matches); if (count($matches) < 1) { plgContentAvreloaded::_err(JText::sprintf('ERR_MATCH_URL', htmlspecialchars($url), htmlspecialchars($resp), htmlspecialchars($robj->regex))); return $ret; } if ($robj->cindex > 0) { $i = $robj->cindex; if ($i >= count($matches)) { plgContentAvreloaded::_err(JText_('ERR_MATCH_INDEX')); return $ret; } $code = $matches[$i]; $a1 = array_slice($matches, 0, $i); $a2 = array_slice($matches, $i + 1); $matches = array($code); $matches = array_merge($matches, $a1, $a2); } return $matches; } plgContentAvreloaded::_err(JText::sprintf('ERR_MATCH_URL', htmlspecialchars($url), htmlspecialchars($resp), htmlspecialchars($robj->regex))); } else plgContentAvreloaded::_err(JText::sprintf('ERR_FETCH_URL', htmlspecialchars($url))); return $ret; } /** * Displays an error message inline */ function _err($msg) { global $mainframe; $mainframe->enqueueMessage($msg, 'error'); } /** * Format a color value. * * @param clr The color value to be formatted. * Possible input formats: * - an int color value * - a string in '0xxxx' notation (like in javascript) * - a string in #RRGGBB notation (HTML, CSS) * - a string in #RGB notation (CSS) * - a string in rgb(r,g,b) notation (CSS) * - a string with a color name * @param fmt The output color format: * '0x' return a string in '0xxx' notation * '#' return a string in #RRGGBB notation * 'rgb' return a string in rgb(r,g,b) notation * * @return string * @access private */ function _fmtColor($clr, $fmt = '0x') { $iclr = -1; if (is_int($clr)) { if ($clr <= 0xFFFFFF) $iclr = $clr; } if (is_string($clr)) { $match = null; $clr = trim($clr); // #xxx css notation and #xxxxxx html/css notation if (preg_match('/^#([\da-f]{3,6})$/i', $clr, $match)) { switch (strlen($match[1])) { case 3: $iclr = intval(sprintf('%s%s%s%s%s%s', $match[1][0], $match[1][0], $match[1][1], $match[1][1], $match[1][2], $match[1][2]), 16); break; case 6: $iclr = intval($match[1], 16); break; } } // 0x... javascript notation if (($iclr == -1) && preg_match('/^0x([0-9a-f]{1,6})$/i', $clr, $match)) { $iclr = intval($match[1], 16); } // rgb(d,d,d) css notation if (($iclr == -1) && preg_match('/^rgb\s*\(\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*\)/', $clr, $match)) { $r = intval($match[1]); if ($r < 0) $r = 0; if ($r > 255) $r = 255; $g = intval($match[2]); if ($g < 0) $g = 0; if ($g > 255) $g = 255; $b = intval($match[3]); if ($b < 0) $b = 0; if ($b > 255) $b = 255; $iclr = ($r << 16) | ($g << 8) | $b; } // html 4.01 color names if ($iclr == -1) { $cn = strtolower($clr); if (isset($this->_w3colors[$cn])) { $iclr = $this->_w3colors[$cn]; } } if ($iclr == -1) { $this->_err(JText::sprintf('ERR_COLORVAL', htmlspecialchars($clr))); return ''; } switch ($fmt) { case '0x': return sprintf("0x%06X", $iclr); case '#': return sprintf("#%06X", $iclr); case 'rgb': return sprintf("rgb(%d,%d,%d)", $iclr >> 16, ($iclr >> 8) & 0xff, $iclr & 0xff); default: JError::raiseError(500, JText::_('ERR_COLORFMT'), $fmt); } } } }

The Reverend William (Bill) Neely

Meet Our Parish Minister
The Reverend William (Bill) Neely

rev_bil_neely

Rev. Bill Neely was called to The Unitarian Universalist Congregation of Princeton in May of 2011 and began serving the church a little later in July. In his ministry, he seeks to empower and inspire members and friends to deepen the spirit in their own lives, their shared congregational life, and in the broader world. Through worship, service, learning, and fellowship, he believes that we gather the strength and collective wisdom to grow in the spirit and bless the world. His ministry is guided by joy, service, love, and unity.

Before coming to Princeton, Bill served as the Interim Minister of First Unitarian Universalist Church, Detroit, and the Settled Minister of Neshoba Unitarian Universalist Church near Memphis, TN. He studied at Meadville Lombard Theological School in Chicago and completed field work in St. Paul, MN, Rockford, IL, and Fond du Lac, WI. Before beginning seminary, he was a member of The Unitarian Church of Norfolk, Va.; the congregation that also ordained him in June, 2006. Among his denominational and professional commitments is service to the Southeastern Unitarian Universalist Summer Institute (SUUSI), an annual UU family camp that draws over 1,000 participants, and past service on the Meadville Lombard Alumni Association Nominating Committee.

Bill and Shannon Neely married in 1998 and have one daughter, Rachel Maia, who was born in 2009. Shannon is a yoga teacher, aspiring doula, and was the person who introduced Bill to Unitarian Universalism in the 1990’s. Their household is rounded out by their two cats, Magnolia (from Memphis) and Della (from Detroit). Bill enjoys Steelers football and many sports in general, reading, Bikram yoga, music, good coffee, great pizza, and any chocolate will do.

 


Welcoming CongregationAccessible

Site Search