]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/common.php
Fixed bad query causing facebook_update to fail
[quix0rs-gnu-social.git] / lib / common.php
index 53cd66cbecd2628396f52d6ead7f7ad5f780ec9b..a2f9b9bfe73f1fdf5deed09fc892997f2144ba4c 100644 (file)
 <?php
-/* 
+/*
  * Laconica - a distributed open-source microblogging tool
  * Copyright (C) 2008, Controlez-Vous, Inc.
- * 
+ *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Affero General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Affero General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-if (!defined('LACONICA')) { exit(1) }
+if (!defined('LACONICA')) { exit(1); }
 
-# global configuration object
-
-// default configuration, overwritten in config.php
+define('LACONICA_VERSION', '0.7.0');
 
-$config =
-  array('site' =>
-               array('name' => 'Just another µB'),
-               'dsn' =>
-               array('phptype' => 'mysql',
-                         'username' => 'stoica',
-                         'password' => 'apasswd',
-                         'hostspec' => 'localhost',
-                         'database' => 'thedb')
-               'dboptions' =>
-               array('debug' => 2,
-                         'portability' => DB_PORTABILITY_ALL));
-
-require_once(INSTALLDIR . '/config.php');
-require_once('DB.php');
-
-# Show a server error
-
-function common_server_error($msg) {
-       header('Status: 500 Server Error');
-       header('Content-type: text/plain');
-
-       print $msg;
-       exit();
-}
+define('AVATAR_PROFILE_SIZE', 96);
+define('AVATAR_STREAM_SIZE', 48);
+define('AVATAR_MINI_SIZE', 24);
+define('MAX_AVATAR_SIZE', 256 * 1024);
 
-# 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();
-}
+define('NOTICES_PER_PAGE', 20);
+define('PROFILES_PER_PAGE', 20);
 
-# 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 '>';
-}
+define('FOREIGN_NOTICE_SEND', 1);
+define('FOREIGN_NOTICE_RECV', 2);
+define('FOREIGN_NOTICE_SEND_REPLY', 4);
 
-function common_element_end($tag) {
-       print "</$tag>";
-}
+define('FOREIGN_FRIEND_SEND', 1);
+define('FOREIGN_FRIEND_RECV', 2);
 
-function common_element($tag, $attrs=NULL, $content=NULL) {
-    common_element_start($tag, $attrs);
-       if ($content) print htmlspecialchars($content);
-       common_element_end($tag);
-}
+define_syslog_variables();
 
-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_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('settings'),
-                                                _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');
-}
+# append our extlib dir as the last-resort place to find libs
 
-# salted, hashed passwords are stored in the DB
+set_include_path(get_include_path() . PATH_SEPARATOR . INSTALLDIR . '/extlib/');
 
-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();
-       }
-}
+# global configuration object
 
-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;
-}
+require_once('PEAR.php');
+require_once('DB/DataObject.php');
+require_once('DB/DataObject/Cast.php'); # for dates
 
-# who is the current user?
-function common_current_user() {
-       static $user = NULL; # FIXME: global memcached
-       if (is_null($user)) {
-               if (common_have_session()) {
-                       $id = $_SESSION['userid'];
-                       if ($id) {
-                               $user = User::staticGet($id);
-                       }
-               }
-       }
-       return $user;
-}
+require_once(INSTALLDIR.'/lib/language.php');
 
-# get canonical version of nickname for comparison
-function common_canonical_nickname($nickname) {
-       # XXX: UTF-8 canonicalization (like combining chars)
-       return strtolower($nickname);
-}
+// default configuration, overwritten in config.php
 
-function common_render_content($text) {
-       # XXX: @ messages
-       # XXX: # tags
-       # XXX: machine tags
-       return htmlspecialchars($text);
+$config =
+  array('site' =>
+        array('name' => 'Just another Laconica microblog',
+              'server' => 'localhost',
+              'theme' => 'default',
+              'path' => '/',
+              'logfile' => null,
+              'fancy' => false,
+              'locale_path' => INSTALLDIR.'/locale',
+              'language' => 'en_US',
+              'languages' => get_all_languages(),
+              'email' =>
+              array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : null,
+              'broughtby' => null,
+              'timezone' => 'UTC',
+              'broughtbyurl' => null,
+              'closed' => false,
+              'inviteonly' => false,
+              'private' => false),
+        'syslog' =>
+        array('appname' => 'laconica', # for syslog
+              'priority' => 'debug'), # XXX: currently ignored
+        'queue' =>
+        array('enabled' => false),
+        'license' =>
+        array('url' => 'http://creativecommons.org/licenses/by/3.0/',
+              'title' => 'Creative Commons Attribution 3.0',
+              'image' => 'http://i.creativecommons.org/l/by/3.0/80x15.png'),
+        'mail' =>
+        array('backend' => 'mail',
+              'params' => null),
+        'nickname' =>
+        array('blacklist' => array(),
+              'featured' => array()),
+        'profile' =>
+        array('banned' => array()),
+        'avatar' =>
+        array('server' => null),
+        'public' =>
+        array('localonly' => true,
+              'blacklist' => array()),
+        'theme' =>
+        array('server' => null),
+        'throttle' =>
+        array('enabled' => false, // whether to throttle edits; false by default
+              'count' => 20, // number of allowed messages in timespan
+              'timespan' => 600), // timespan for throttling
+        'xmpp' =>
+        array('enabled' => false,
+              'server' => 'INVALID SERVER',
+              'port' => 5222,
+              'user' => 'update',
+              'encryption' => true,
+              'resource' => 'uniquename',
+              'password' => 'blahblahblah',
+              'host' => null, # only set if != server
+              'debug' => false, # print extra debug info
+              'public' => array()), # JIDs of users who want to receive the public stream
+        'sphinx' =>
+        array('enabled' => false,
+              'server' => 'localhost',
+              'port' => 3312),
+        'tag' =>
+        array('dropoff' => 864000.0),
+        'popular' =>
+        array('dropoff' => 864000.0),
+        'daemon' =>
+        array('piddir' => '/var/run',
+              'user' => false,
+              'group' => false),
+        'integration' =>
+        array('source' => 'Laconica'), # source attribute for Twitter
+        'memcached' =>
+        array('enabled' => false,
+              'server' => 'localhost',
+              'port' => 11211),
+        'inboxes' =>
+        array('enabled' => true), # on by default for new sites
+        );
+
+$config['db'] = &PEAR::getStaticProperty('DB_DataObject','options');
+
+$config['db'] =
+  array('database' => 'YOU HAVE TO SET THIS IN config.php',
+        'schema_location' => INSTALLDIR . '/classes',
+        'class_location' => INSTALLDIR . '/classes',
+        'require_prefix' => 'classes/',
+        'class_prefix' => '',
+        'mirror' => null,
+        'db_driver' => 'DB', # XXX: JanRain libs only work with DB
+        'quote_identifiers' => false,
+        'type' => 'mysql' );
+
+if (function_exists('date_default_timezone_set')) {
+    /* Work internally in UTC */
+    date_default_timezone_set('UTC');
+}
+
+require_once(INSTALLDIR.'/config.php');
+
+require_once('Validate.php');
+require_once('markdown.php');
+
+require_once(INSTALLDIR.'/lib/util.php');
+require_once(INSTALLDIR.'/lib/action.php');
+require_once(INSTALLDIR.'/lib/theme.php');
+require_once(INSTALLDIR.'/lib/mail.php');
+require_once(INSTALLDIR.'/lib/subs.php');
+require_once(INSTALLDIR.'/lib/Shorturl_api.php');
+require_once(INSTALLDIR.'/lib/twitter.php');
+
+// XXX: other formats here
+
+define('NICKNAME_FMT', VALIDATE_NUM.VALIDATE_ALPHA_LOWER);
+
+function __autoload($class)
+{
+    if ($class == 'OAuthRequest') {
+        require_once('OAuth.php');
+    } else if (file_exists(INSTALLDIR.'/classes/' . $class . '.php')) {
+        require_once(INSTALLDIR.'/classes/' . $class . '.php');
+    } else if (file_exists(INSTALLDIR.'/lib/' . strtolower($class) . '.php')) {
+        require_once(INSTALLDIR.'/lib/' . strtolower($class) . '.php');
+    }
 }
-
-// XXX: set up gettext
-
-function _t($str) { $str }