. * * @category Installation * @package Installation * @license GNU Affero General Public License http://www.gnu.org/licenses/ * */ define('INSTALLDIR', dirname(__FILE__)); $external_libraries=array( array( 'name'=>'gettext', 'url'=>'http://us.php.net/manual/en/book.gettext.php', 'check_function'=>'gettext' ), array( 'name'=>'PEAR', 'url'=>'http://pear.php.net/', 'deb'=>'php-pear', 'include'=>'PEAR.php', 'check_class'=>'PEAR' ), array( 'name'=>'DB', 'pear'=>'DB', 'url'=>'http://pear.php.net/package/DB', 'deb'=>'php-db', 'include'=>'DB/common.php', 'check_class'=>'DB_common' ), array( 'name'=>'DB_DataObject', 'pear'=>'DB_DataObject', 'url'=>'http://pear.php.net/package/DB_DataObject', 'include'=>'DB/DataObject.php', 'check_class'=>'DB_DataObject' ), array( 'name'=>'Console_Getopt', 'pear'=>'Console_Getopt', 'url'=>'http://pear.php.net/package/Console_Getopt', 'include'=>'Console/Getopt.php', 'check_class'=>'Console_Getopt' ), array( 'name'=>'Facebook API', 'url'=>'http://developers.facebook.com/', 'include'=>'facebook/facebook.php', 'check_class'=>'Facebook' ), array( 'name'=>'htmLawed', 'url'=>'http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed', 'include'=>'htmLawed/htmLawed.php', 'check_function'=>'htmLawed' ), array( 'name'=>'HTTP_Request', 'pear'=>'HTTP_Request', 'url'=>'http://pear.php.net/package/HTTP_Request', 'deb'=>'php-http-request', 'include'=>'HTTP/Request.php', 'check_class'=>'HTTP_Request' ), array( 'name'=>'Mail', 'pear'=>'Mail', 'url'=>'http://pear.php.net/package/Mail', 'deb'=>'php-mail', 'include'=>'Mail.php', 'check_class'=>'Mail' ), array( 'name'=>'Mail_mimeDecode', 'pear'=>'Mail_mimeDecode', 'url'=>'http://pear.php.net/package/Mail_mimeDecode', 'deb'=>'php-mail-mimedecode', 'include'=>'Mail/mimeDecode.php', 'check_class'=>'Mail_mimeDecode' ), array( 'name'=>'Mime_Type', 'pear'=>'Mime_Type', 'url'=>'http://pear.php.net/package/Mime_Type', 'include'=>'MIME/Type.php', 'check_class'=>'Mime_Type' ), array( 'name'=>'Net_URL_Mapper', 'pear'=>'Net_URL_Mapper', 'url'=>'http://pear.php.net/package/Net_URL_Mapper', 'include'=>'Net/URL/Mapper.php', 'check_class'=>'Net_URL_Mapper' ), array( 'name'=>'Net_Socket', 'pear'=>'Net_Socket', 'url'=>'http://pear.php.net/package/Net_Socket', 'deb'=>'php-net-socket', 'include'=>'Net/Socket.php', 'check_class'=>'Net_Socket' ), array( 'name'=>'Net_SMTP', 'pear'=>'Net_SMTP', 'url'=>'http://pear.php.net/package/Net_SMTP', 'deb'=>'php-net-smtp', 'include'=>'Net/SMTP.php', 'check_class'=>'Net_SMTP' ), array( 'name'=>'Net_URL', 'pear'=>'Net_URL', 'url'=>'http://pear.php.net/package/Net_URL', 'deb'=>'php-net-url', 'include'=>'Net/URL.php', 'check_class'=>'Net_URL' ), array( 'name'=>'Net_URL2', 'pear'=>'Net_URL2', 'url'=>'http://pear.php.net/package/Net_URL2', 'include'=>'Net/URL2.php', 'check_class'=>'Net_URL2' ), array( 'name'=>'Services_oEmbed', 'pear'=>'Services_oEmbed', 'url'=>'http://pear.php.net/package/Services_oEmbed', 'include'=>'Services/oEmbed.php', 'check_class'=>'Services_oEmbed' ), array( 'name'=>'Stomp', 'url'=>'http://stomp.codehaus.org/PHP', 'include'=>'Stomp.php', 'check_class'=>'Stomp' ), array( 'name'=>'System_Command', 'pear'=>'System_Command', 'url'=>'http://pear.php.net/package/System_Command', 'include'=>'System/Command.php', 'check_class'=>'System_Command' ), array( 'name'=>'XMPPHP', 'url'=>'http://code.google.com/p/xmpphp', 'include'=>'XMPPHP/XMPP.php', 'check_class'=>'XMPPHP_XMPP' ), array( 'name'=>'PHP Markdown', 'url'=>'http://www.michelf.com/projects/php-markdown/', 'include'=>'markdown.php', 'check_class'=>'Markdown_Parser' ), array( 'name'=>'OAuth', 'url'=>'http://code.google.com/p/oauth-php', 'include'=>'OAuth.php', 'check_class'=>'OAuthRequest' ), array( 'name'=>'Validate', 'pear'=>'Validate', 'url'=>'http://pear.php.net/package/Validate', 'include'=>'Validate.php', 'check_class'=>'Validate' ) ); $dbModules = array( 'mysql' => array( 'name' => 'MySQL', 'check_module' => 'mysql', // mysqli? 'installer' => 'mysql_db_installer', ), 'pgsql' => array( 'name' => 'PostgreSQL', 'check_module' => 'pgsql', 'installer' => 'pgsql_db_installer', ), ); /** * the actual installation. * If call libraries are present, then install * * @return void */ function main() { if (!checkPrereqs()) { return; } if ($_GET['checklibs']) { showLibs(); } else { if ($_SERVER['REQUEST_METHOD'] == 'POST') { handlePost(); } else { showForm(); } } } function haveExternalLibrary($external_library) { if (isset($external_library['include']) && ! include_once $external_library['include'] ) { return false; } if (isset($external_library['check_function']) && ! function_exists($external_library['check_function'])) { return false; } if (isset($external_library['check_class']) && ! class_exists($external_library['check_class'])) { return false; } return true; } function checkPrereqs() { $pass = true; if (file_exists(INSTALLDIR.'/config.php')) { printf('

Config file "config.php" already exists.

'); $pass = false; } if (version_compare(PHP_VERSION, '5.2.3', '<')) { printf('

Require PHP version 5.2.3 or greater.

'); $pass = false; } $reqs = array('gd', 'curl', 'xmlwriter', 'mbstring','tidy'); foreach ($reqs as $req) { if (!checkExtension($req)) { printf('

Cannot load required extension: %s

', $req); $pass = false; } } // Make sure we have at least one database module available global $dbModules; $missingExtensions = array(); foreach ($dbModules as $type => $info) { if (!checkExtension($info['check_module'])) { $missingExtensions[] = $info['check_module']; } } if (count($missingExtensions) == count($dbModules)) { $req = implode(', ', $missingExtensions); printf('

Cannot find mysql or pgsql extension. You need one or the other: %s

', $req); $pass = false; } if (!is_writable(INSTALLDIR)) { printf('

Cannot write config file to: %s

', INSTALLDIR); printf('

On your server, try this command: chmod a+w %s', INSTALLDIR); $pass = false; } // Check the subdirs used for file uploads $fileSubdirs = array('avatar', 'background', 'file'); foreach ($fileSubdirs as $fileSubdir) { $fileFullPath = INSTALLDIR."/$fileSubdir/"; if (!is_writable($fileFullPath)) { printf('

Cannot write to %s directory: %s

', $fileSubdir, $fileFullPath); printf('

On your server, try this command: chmod a+w %s

', $fileFullPath); $pass = false; } } return $pass; } function checkExtension($name) { if (!extension_loaded($name)) { if (!@dl($name.'.so')) { return false; } } return true; } function showLibs() { global $external_libraries; $present_libraries=array(); $absent_libraries=array(); foreach ($external_libraries as $external_library){ if (haveExternalLibrary($external_library)) { $present_libraries[]=$external_library; } else { $absent_libraries[]=$external_library; } } echo<<

Laconica comes bundled with a number of libraries required for the application to work. However, it is best that you use PEAR or you distribution to manage libraries instead, as they tend to provide security updates faster, and may offer improved performance.

On Debian based distributions, such as Ubuntu, use a package manager (such as "aptitude", "apt-get", and "synaptic") to install the package listed.

On RPM based distributions, such as Red Hat, Fedora, CentOS, Scientific Linux, Yellow Dog Linux and Oracle Enterprise Linux, use a package manager (such as "yum", "apt-rpm", and "up2date") to install the package listed.

On servers without a package manager (such as Windows), or if the library is not packaged for your distribution, you can use PHP's PEAR to install the library. Simply run "pear install <name>".

Absent Libraries