Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gnu-social
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vinilox
gnu-social
Commits
af97bc89
Commit
af97bc89
authored
Aug 26, 2011
by
Zach Copley
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make site profiles work
parent
a6000f30
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
323 additions
and
19 deletions
+323
-19
install.php
install.php
+14
-8
lib/installer.php
lib/installer.php
+34
-11
lib/siteprofile.php
lib/siteprofile.php
+264
-0
lib/statusnet.php
lib/statusnet.php
+11
-0
No files found.
install.php
View file @
af97bc89
...
...
@@ -249,11 +249,11 @@ class WebInstaller extends Installer
</ul>
</fieldset>
<fieldset id="settings_profile">
<legend>
Installation
profile</legend>
<legend>
Site
profile</legend>
<ul class="form_data">
<li>
<label for="
profile">Profil
e</label>
<select id="
profile" name="
profile">
<label for="
site_profile">Type of sit
e</label>
<select id="
site_profile" name="site_
profile">
<option value="private">Private</option>
<option value="community">Community</option>
<option value ="public">Public</option>
...
...
@@ -298,7 +298,7 @@ STR;
/**
* Read and validate input data.
* May output side effects.
*
*
* @return boolean success
*/
function
prepare
()
...
...
@@ -318,6 +318,8 @@ STR;
$this
->
adminEmail
=
$post
->
string
(
'admin_email'
);
$this
->
adminUpdates
=
$post
->
string
(
'admin_updates'
);
$this
->
siteProfile
=
$post
->
string
(
'site_profile'
);
$this
->
server
=
$_SERVER
[
'HTTP_HOST'
];
$this
->
path
=
substr
(
dirname
(
$_SERVER
[
'PHP_SELF'
]),
1
);
...
...
@@ -329,12 +331,16 @@ STR;
if
(
!
$this
->
validateAdmin
())
{
$fail
=
true
;
}
if
(
$this
->
adminPass
!=
$adminPass2
)
{
$this
->
updateStatus
(
"Administrator passwords do not match. Did you mistype?"
,
true
);
$fail
=
true
;
}
if
(
!
$this
->
validateSiteProfile
())
{
$fail
=
true
;
}
return
!
$fail
;
}
...
...
@@ -373,11 +379,11 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<div
id=
"content_wrapper"
>
<div
id=
"site_nav_local_views_wrapper"
>
<div
id=
"site_nav_local_views"
></div>
<div
id=
"content"
>
<div
id=
"content_inner"
>
<h1>
Install StatusNet
</h1>
<?php
<?php
$installer
=
new
WebInstaller
();
$installer
->
main
();
?>
...
...
lib/installer.php
View file @
af97bc89
...
...
@@ -42,7 +42,7 @@
abstract
class
Installer
{
/** Web site info */
public
$sitename
,
$server
,
$path
,
$fancy
;
public
$sitename
,
$server
,
$path
,
$fancy
,
$siteProfile
;
/** DB info */
public
$host
,
$database
,
$dbtype
,
$username
,
$password
,
$db
;
/** Administrator info */
...
...
@@ -73,7 +73,7 @@ abstract class Installer
error_reporting
(
$old
);
return
$ok
;
}
/**
* Check if all is ready for installation
*
...
...
@@ -185,7 +185,7 @@ abstract class Installer
/**
* Basic validation on the database paramters
* Side effects: error output if not valid
*
*
* @return boolean success
*/
function
validateDb
()
...
...
@@ -218,7 +218,7 @@ abstract class Installer
/**
* Basic validation on the administrator user paramters
* Side effects: error output if not valid
*
*
* @return boolean success
*/
function
validateAdmin
()
...
...
@@ -251,10 +251,29 @@ abstract class Installer
return
!
$fail
;
}
/**
* Make sure a site profile was selected
*
* @return type boolean success
*/
function
validateSiteProfile
()
{
$fail
=
false
;
$sprofile
=
$this
->
siteProfile
;
if
(
empty
(
$sprofile
))
{
$this
->
updateStatus
(
"No site profile selected."
,
true
);
$fail
=
true
;
}
return
!
$fail
;
}
/**
* Set up the database with the appropriate function for the selected type...
* Saves database info into $this->db.
*
*
* @fixme escape things in the connection string in case we have a funny pass etc
* @return mixed array of database connection params on success, false on failure
*/
...
...
@@ -316,7 +335,7 @@ abstract class Installer
* Open a connection to the database.
*
* @param <type> $dsn
* @return <type>
* @return <type>
*/
function
connectDatabase
(
$dsn
)
{
...
...
@@ -384,7 +403,7 @@ abstract class Installer
* Write a stock configuration file.
*
* @return boolean success
*
*
* @fixme escape variables in output in case we have funny chars, apostrophes etc
*/
function
writeConf
()
...
...
@@ -395,6 +414,7 @@ abstract class Installer
'path'
=>
$this
->
path
,
'db_database'
=>
$this
->
db
[
'database'
],
'db_type'
=>
$this
->
db
[
'type'
],
'site_profile'
=>
$this
->
siteProfile
));
// assemble configuration file in a string
...
...
@@ -414,7 +434,10 @@ abstract class Installer
// database
"
\$
config['db']['database'] =
{
$vals
[
'db_database'
]
}
;
\n\n
"
.
(
$this
->
db
[
'type'
]
==
'pgsql'
?
"
\$
config['db']['quote_identifiers'] = true;
\n\n
"
:
''
)
.
"
\$
config['db']['type'] =
{
$vals
[
'db_type'
]
}
;
\n\n
"
;
"
\$
config['db']['type'] =
{
$vals
[
'db_type'
]
}
;
\n\n
"
.
// site profile
"
\$
config['site']['profile'] =
{
$vals
[
'site_profile'
]
}
;
\n\n
"
;
// Normalize line endings for Windows servers
$cfg
=
str_replace
(
"
\n
"
,
PHP_EOL
,
$cfg
);
...
...
@@ -479,7 +502,7 @@ abstract class Installer
$user
->
grantRole
(
'owner'
);
$user
->
grantRole
(
'moderator'
);
$user
->
grantRole
(
'administrator'
);
// Attempt to do a remote subscribe to update@status.net
// Will fail if instance is on a private network.
...
...
@@ -499,9 +522,9 @@ abstract class Installer
/**
* The beef of the installer!
* Create database, config file, and admin user.
*
*
* Prerequisites: validation of input data.
*
*
* @return boolean success
*/
function
doInstall
()
...
...
lib/siteprofile.php
0 → 100644
View file @
af97bc89
<?php
/**
* StatusNet, the distributed open-source microblogging tool
*
* A site profile is a set of default settings for a particular style of
* StatusNet site: public, private, community, etc.
*
* PHP version 5
*
* LICENCE: 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/>.
*
* @category Installation
* @package StatusNet
* @author Zach Copley <zach@status.net>
* @copyright 2011 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
if
(
!
defined
(
'STATUSNET'
))
{
exit
(
1
);
}
/**
* Helper class for getting the settings for a particular site profile
*/
class
SiteProfile
{
/**
* Returns the config settings for a site profile by name
*
* @param string $name name of a site profile
* @return array config settings
*/
static
public
function
getSettings
(
$name
)
{
$sprofileClass
=
ucfirst
(
$name
)
.
"Site"
;
if
(
class_exists
(
$sprofileClass
))
{
return
$sprofileClass
::
getSettings
();
}
else
{
common_log
(
LOG_ERR
,
"Unknown site profile '
{
$name
}
' specified in config file."
,
__FILE__
);
return
array
();
}
}
}
/**
* Site profile settings contain the list of the default settings (and
* possibly other information for a particular flavor of StatusNet
* installation). These will overwrite base defaults in $config global.
*
* @category Installation
* @package StatusNet
* @author Zach Copley <zach@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
abstract
class
SiteProfileSettings
{
abstract
static
function
getSettings
();
}
/**
* Settings for a 'public' site
*/
class
PublicSite
extends
SiteProfileSettings
{
/**
* Get the settings for this site profile
*
* @return type array an array of settings
*/
static
function
getSettings
()
{
return
array
(
'site'
=>
array
(
'inviteonly'
=>
false
,
'private'
=>
false
),
'plugins'
=>
array
(
'default'
=>
array
(
'Activity'
=>
null
,
'Bookmark'
=>
null
,
'ClientSideShorten'
=>
null
,
'Directory'
=>
null
,
'Event'
=>
null
,
'ExtendedProfile'
=>
null
,
'Geonames'
=>
null
,
'Gravatar'
=>
null
,
'OpenID'
=>
null
,
'OStatus'
=>
null
,
'Poll'
=>
null
,
'QnA'
=>
null
,
'SearchSub'
=>
null
,
'StrictTransportSecurity'
=>
null
,
'TagSub'
=>
null
),
'discovery'
=>
array
(
'cors'
=>
true
)
// Allow Cross-Origin Resource Sharing for service discovery (host-meta, XRD, etc.)
)
);
}
}
/**
* Settings for a 'private' site
*
* // XXX Too business oriented?
*/
class
PrivateSite
extends
SiteProfileSettings
{
/**
* Get the settings for this site profile
*
* @return type array an array of settings
*/
static
function
getSettings
()
{
return
array
(
'site'
=>
array
(
'inviteonly'
=>
true
,
'private'
=>
true
),
'plugins'
=>
array
(
'default'
=>
array
(
'Activity'
=>
null
,
'Bookmark'
=>
null
,
'ClientSideShorten'
=>
null
,
'Directory'
=>
null
,
'Event'
=>
null
,
'ExtendedProfile'
=>
null
,
'EmailRegistration'
=>
null
,
'Geonames'
=>
null
,
'Gravatar'
=>
null
,
'NewMenu'
=>
null
,
'MobileProfile'
=>
null
,
'OpenID'
=>
null
,
'Poll'
=>
null
,
'QnA'
=>
null
,
'SearchSub'
=>
null
,
'StrictTransportSecurity'
=>
null
,
'TagSub'
=>
null
)
),
'profile'
=>
array
(
'delete'
=>
'true'
),
'license'
=>
array
(
'type'
=>
'private'
),
'attachments'
=>
array
(
// Only allow uploads of pictures and MS Office files
'supported'
=>
array
(
'image/png'
,
'image/jpeg'
,
'image/gif'
,
'image/svg+xml'
,
'application/pdf'
,
'application/msword'
,
'application/vnd.ms-office'
,
'application/vnd.ms-excel'
,
'application/vnd.ms-powerpoint'
,
'application/ogg'
)
),
'discovery'
=>
array
(
'cors'
=>
false
)
// Allow Cross-Origin Resource Sharing for service discovery (host-meta, XRD, etc.)
);
}
}
/**
* Settings for a 'community' site
*/
class
CommunitySite
extends
SiteProfileSettings
{
/**
* Get the settings for this site profile
*
* @return type array an array of settings
*/
static
function
getSettings
()
{
return
array
(
'site'
=>
array
(
'inviteonly'
=>
true
,
'private'
=>
false
),
'plugins'
=>
array
(
'default'
=>
array
(
'Activity'
=>
null
,
'Bookmark'
=>
null
,
'ClientSideShorten'
=>
null
,
'Directory'
=>
null
,
'Event'
=>
null
,
'Geonames'
=>
null
,
'Gravatar'
=>
null
,
'OpenID'
=>
null
,
'OStatus'
=>
null
,
'Poll'
=>
null
,
'QnA'
=>
null
,
'SearchSub'
=>
null
,
'StrictTransportSecurity'
=>
null
,
'TagSub'
=>
null
),
'discovery'
=>
array
(
'cors'
=>
true
)
// Allow Cross-Origin Resource Sharing for service discovery (host-meta, XRD, etc.)
)
);
}
}
/**
* Settings for a 'singleuser' site
*/
class
SingleuserSite
extends
SiteProfileSettings
{
/**
* Get the settings for this site profile
*
* @return type array an array of settings
*/
static
function
getSettings
()
{
return
array
(
'singleuser'
=>
array
(
'enabled'
=>
true
),
'site'
=>
array
(
'private'
=>
false
,
'closed'
=>
true
,
),
'plugins'
=>
array
(
'default'
=>
array
(
'Activity'
=>
null
,
'Bookmark'
=>
null
,
'ClientSideShorten'
=>
null
,
'Event'
=>
null
,
'Geonames'
=>
null
,
'NewMenu'
=>
null
,
'MobileProfile'
=>
null
,
'OpenID'
=>
null
,
'OStatus'
=>
null
,
'Poll'
=>
null
,
'QnA'
=>
null
,
'SearchSub'
=>
null
,
'StrictTransportSecurity'
=>
null
,
'TagSub'
=>
null
,
'TwitterBridge'
=>
null
,
'FacebookBridge'
=>
null
),
'discovery'
=>
array
(
'cors'
=>
true
)
// Allow Cross-Origin Resource Sharing for service discovery (host-meta, XRD, etc.)
)
);
}
}
lib/statusnet.php
View file @
af97bc89
...
...
@@ -113,6 +113,10 @@ class StatusNet
StatusNet
::
initDefaults
(
$server
,
$path
);
StatusNet
::
loadConfigFile
(
$conffile
);
$sprofile
=
common_config
(
'site'
,
'profile'
);
if
(
!
empty
(
$sprofile
))
{
StatusNet
::
loadSiteProfile
(
$sprofile
);
}
// Load settings from database; note we need autoload for this
Config
::
loadSettings
();
...
...
@@ -302,6 +306,13 @@ class StatusNet
}
}
public
static
function
loadSiteProfile
(
$name
)
{
global
$config
;
$settings
=
SiteProfile
::
getSettings
(
$name
);
$config
=
array_replace_recursive
(
$config
,
$settings
);
}
protected
function
_sn_to_path
(
$sn
)
{
$past_root
=
substr
(
$sn
,
1
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment