diff options
author | Evan Prodromou <evan@prodromou.name> | 2008-05-20 09:05:35 -0400 |
---|---|---|
committer | Evan Prodromou <evan@prodromou.name> | 2008-05-20 09:05:35 -0400 |
commit | e18c5321c49e8559cea55d1130dbfe436f2867a7 (patch) | |
tree | ca4e973f8c7a829365ceb08116d5955881f0385b /lib/common.php | |
parent | 9bbf34c51c9675923926a0477b364c872976a8a4 (diff) |
break out utility functions to util.php
darcs-hash:20080520130535-84dde-5414005cdbd8d39bb548c75388893c7827f2fb16.gz
Diffstat (limited to 'lib/common.php')
-rw-r--r-- | lib/common.php | 275 |
1 files changed, 1 insertions, 274 deletions
diff --git a/lib/common.php b/lib/common.php index a35db3a9b..ea83682ea 100644 --- a/lib/common.php +++ b/lib/common.php @@ -57,6 +57,7 @@ $config['db'] = 'quote_identifiers' => false); require_once(INSTALLDIR.'/config.php'); +require_once(INSTALLDIR.'/lib/util.php'); require_once(INSTALLDIR.'/lib/action.php'); require_once(INSTALLDIR.'/classes/Avatar.php'); @@ -65,277 +66,3 @@ require_once(INSTALLDIR.'/classes/Profile.php'); require_once(INSTALLDIR.'/classes/Remote_profile.php'); require_once(INSTALLDIR.'/classes/Subscription.php'); require_once(INSTALLDIR.'/classes/User.php'); - -# Show a server error - -function common_server_error($msg) { - header('Status: 500 Server Error'); - header('Content-type: text/plain'); - - print $msg; - exit(); -} - -# Show a user error -function common_user_error($msg, $code=200) { - common_show_header('Error'); - common_element('div', array('class' => 'error'), $msg); - common_show_footer(); -} - -# Start an HTML element -function common_element_start($tag, $attrs=NULL) { - print "<$tag"; - if (is_array($attrs)) { - foreach ($attrs as $name => $value) { - print " $name='$value'"; - } - } else if (is_string($attrs)) { - print " class='$attrs'"; - } - print '>'; -} - -function common_element_end($tag) { - print "</$tag>"; -} - -function common_element($tag, $attrs=NULL, $content=NULL) { - common_element_start($tag, $attrs); - if ($content) print htmlspecialchars($content); - common_element_end($tag); -} - -function common_show_header($pagetitle) { - global $config; - common_element_start('html'); - common_element_start('head'); - common_element('title', NULL, - $pagetitle . " - " . $config['site']['name']); - common_element_end('head'); - common_element_start('body'); - common_element('h1', 'title', $pagetitle); - common_head_menu(); -} - -function common_show_footer() { - common_foot_menu(); - common_element_end('body'); - common_element_end('html'); -} - -function common_head_menu() { - $user = common_current_user(); - common_element_start('ul', 'headmenu'); - common_menu_item(common_local_url('doc', array('title' => 'help')), - _t('Help')); - if ($user) { - common_menu_item(common_local_url('all', array('nickname' => - $user->nickname)), - _t('Home')); - common_menu_item(common_local_url('showstream', array('nickname' => - $user->nickname)), - _t('Profile'), $user->fullname || $user->nickname); - common_menu_item(common_local_url('profilesettings'), - _t('Settings')); - common_menu_item(common_local_url('logout'), - _t('Logout')); - } else { - common_menu_item(common_local_url('login'), - _t('Login')); - common_menu_item(common_local_url('register'), - _t('Register')); - } - common_element_end('ul'); -} - -function common_foot_menu() { - common_element_start('ul', 'footmenu'); - common_menu_item(common_local_url('doc', array('title' => 'about')), - _t('About')); - common_menu_item(common_local_url('doc', array('title' => 'help')), - _t('Help')); - common_menu_item(common_local_url('doc', array('title' => 'privacy')), - _t('Privacy')); -} - -function common_menu_item($url, $text, $title=NULL) { - $attrs['href'] = $url; - if ($title) { - $attrs['title'] = $title; - } - common_element_start('li', 'menuitem'); - common_element('a', $attrs, $text); - common_element_end('li'); -} - -function common_input($id, $label, $value=NULL) { - common_element('label', array('for' => $id), $label); - $attrs = array('name' => $id, - 'type' => 'text', - 'id' => $id); - if ($value) { - $attrs['value'] = htmlspecialchars($value); - } - common_element('input', $attrs); -} - -function common_password($id, $label) { - common_element('label', array('for' => $id), $label); - $attrs = array('name' => $id, - 'type' => 'password', - 'id' => $id); - common_element('input', $attrs); -} - -# salted, hashed passwords are stored in the DB - -function common_munge_password($id, $password) { - return md5($id . $password); -} - -# check if a username exists and has matching password -function common_check_user($nickname, $password) { - $user = User::staticGet('nickname', $nickname); - if (is_null($user)) { - return false; - } else { - return (0 == strcmp(common_munge_password($password, $user->id), - $user->password)); - } -} - -# is the current user logged in? -function common_logged_in() { - return (!is_null(common_current_user())); -} - -function common_have_session() { - return (0 != strcmp(session_id(), '')); -} - -function common_ensure_session() { - if (!common_have_session()) { - @session_start(); - } -} - -function common_set_user($nickname) { - if (is_null($nickname) && common_have_session()) { - unset($_SESSION['userid']); - return true; - } else { - $user = User::staticGet('nickname', $nickname); - if ($user) { - common_ensure_session(); - $_SESSION['userid'] = $user->id; - return true; - } else { - return false; - } - } - return false; -} - -# who is the current user? -function common_current_user() { - static $user = NULL; # FIXME: global memcached - if (is_null($user)) { - common_ensure_session(); - $id = $_SESSION['userid']; - if ($id) { - $user = User::staticGet($id); - } - } - return $user; -} - -# get canonical version of nickname for comparison -function common_canonical_nickname($nickname) { - # XXX: UTF-8 canonicalization (like combining chars) - return $nickname; -} - -# get canonical version of email for comparison -function common_canonical_email($email) { - # XXX: canonicalize UTF-8 - # XXX: lcase the domain part - return $email; -} - -function common_render_content($text) { - # XXX: @ messages - # XXX: # tags - # XXX: machine tags - return htmlspecialchars($text); -} - -// where should the avatar go for this user? - -function common_avatar_filename($user, $extension, $size=NULL) { - global $config; - - if ($size) { - return $user->id . '-' . $size . $extension; - } else { - return $user->id . '-original' . $extension; - } -} - -function common_avatar_path($filename) { - global $config; - return $config['avatar']['directory'] . '/' . $filename; -} - -function common_avatar_url($filename) { - global $config; - return $config['avatar']['path'] . '/' . $filename; -} - -function common_local_url($action, $args=NULL) { - global $config; - /* XXX: pretty URLs */ - $extra = ''; - if ($args) { - foreach ($args as $key => $value) { - $extra .= "&${key}=${value}"; - } - } - $pathpart = ($config['site']['path']) ? $config['site']['path']."/" : ''; - return "http://".$config['site']['server'].'/'.$pathpart."index.php?action=${action}${extra}"; -} - -function common_date_string($dt) { - // XXX: do some sexy date formatting - // return date(DATE_RFC822, $dt); - return $dt; -} - -function common_redirect($url, $code=307) { - static $status = array(301 => "Moved Permanently", - 302 => "Found", - 303 => "See Other", - 307 => "Temporary Redirect"); - header("Status: ${code} $status[$code]"); - header("Location: $url"); - common_element('a', array('href' => $url), $url); -} - -function common_broadcast_notices($id) { - // XXX: broadcast notices to remote subscribers - // XXX: broadcast notices to SMS - // XXX: broadcast notices to Jabber - // XXX: broadcast notices to other IM - // XXX: use a queue system like http://code.google.com/p/microapps/wiki/NQDQ - return true; -} - -function common_profile_url($nickname) { - return common_local_url('showstream', array('nickname' => $nickname)); -} - -// XXX: set up gettext - -function _t($str) { - return $str; -} |