mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-20 01:35:12 +00:00
Merge branch 'master' into tres
This commit is contained in:
commit
7c7a5cba8f
31 changed files with 612 additions and 421 deletions
|
@ -1,6 +1,9 @@
|
|||
|
||||
Hubzilla - Hub Deployment Platform
|
||||
==================================
|
||||
Hubzilla
|
||||
========
|
||||
|
||||
###Websites. Redefined.
|
||||
|
||||
|
||||
![Hubzilla](images/ghash-32.png)
|
||||
|
||||
|
|
14
boot.php
14
boot.php
|
@ -605,6 +605,7 @@ class App {
|
|||
public $observer = null; // xchan record of the page observer
|
||||
public $profile_uid = 0; // If applicable, the channel_id of the "page owner"
|
||||
public $poi = null; // "person of interest", generally a referenced connection
|
||||
private $oauth_key = null; // consumer_id of oauth request, if used
|
||||
public $layout = array(); // Comanche parsed template
|
||||
public $pdl = null;
|
||||
private $perms = null; // observer permissions
|
||||
|
@ -888,6 +889,7 @@ class App {
|
|||
$this->observer = $xchan;
|
||||
}
|
||||
|
||||
|
||||
function get_observer() {
|
||||
return $this->observer;
|
||||
}
|
||||
|
@ -900,6 +902,14 @@ class App {
|
|||
return $this->perms;
|
||||
}
|
||||
|
||||
function set_oauth_key($consumer_id) {
|
||||
$this->oauth_key = $consumer_id;
|
||||
}
|
||||
|
||||
function get_oauth_key() {
|
||||
return $this->oauth_key;
|
||||
}
|
||||
|
||||
function get_apps() {
|
||||
return $this->apps;
|
||||
}
|
||||
|
@ -2093,7 +2103,9 @@ function construct_page(&$a) {
|
|||
}
|
||||
|
||||
// And a couple of convenience macros
|
||||
|
||||
if(strpos($v, '$htmlhead') !== false) {
|
||||
$v = str_replace('$htmlhead', $a->page['htmlhead'], $v);
|
||||
}
|
||||
if(strpos($v, '$nav') !== false) {
|
||||
$v = str_replace('$nav', $a->page['nav'], $v);
|
||||
}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
|
||||
Hubzilla - Hub Deployment Platform
|
||||
==================================
|
||||
Hubzilla
|
||||
========
|
||||
|
||||
###Websites. Redefined.
|
||||
|
||||
|
||||
![Hubzilla](images/ghash-32.png)
|
||||
|
||||
|
||||
**What are Hubs?**
|
||||
|
||||
Hubs are independent general-purpose websites that not only connect with their associated members and viewers, but also connect together to exchange personal communications and other information with each other.
|
||||
|
@ -34,4 +36,3 @@ Possible website applications include
|
|||
* forums
|
||||
* dating websites
|
||||
* pretty much anything you can do on a traditional blog or community website, but that you could do better if you could easily connect it with other websites or privately share things across website boundaries.
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ We need much more than this, but here are areas where developers can help. Pleas
|
|||
[li]Integrate the "open site" list with the register page[/li]
|
||||
[li]implement oembed provider interface[/li]
|
||||
[li]refactor the oembed client interface so that we can safely sandbox remote content[/li]
|
||||
[li]Many modern social apps now have both a profile photo and a "cover photo". Add support for this.
|
||||
[li]Write more webpage layouts[/li]
|
||||
[li]Write more webpage widgets[/li]
|
||||
[li]restricted access OAuth clients[/li]
|
||||
|
|
|
@ -78,11 +78,14 @@ require_once('include/items.php');
|
|||
// list($consumer,$token) = $oauth->verify_request(OAuthRequest::from_request());
|
||||
if (!is_null($token)){
|
||||
$oauth->loginUser($token->uid);
|
||||
|
||||
$a->set_oauth_key($consumer->key);
|
||||
|
||||
call_hooks('logged_in', $a->user);
|
||||
return;
|
||||
}
|
||||
echo __file__.__line__.__function__."<pre>";
|
||||
var_dump($consumer, $token);
|
||||
// var_dump($consumer, $token);
|
||||
die();
|
||||
}
|
||||
catch(Exception $e) {
|
||||
|
|
|
@ -4,10 +4,11 @@
|
|||
*
|
||||
* @brief File/attach API with the potential for revision control.
|
||||
*
|
||||
* @TODO: a filesystem storage abstraction which maintains security (and 'data' contains a system filename
|
||||
* which is inaccessible from the web). This could get around PHP storage limits and store videos and larger
|
||||
* items, using fread or OS methods or native code to read/write or chunk it through.
|
||||
* Also an 'append' option to the storage function might be a useful addition.
|
||||
* @TODO A filesystem storage abstraction which maintains security (and 'data'
|
||||
* contains a system filename which is inaccessible from the web). This could
|
||||
* get around PHP storage limits and store videos and larger items, using fread
|
||||
* or OS methods or native code to read/write or chunk it through.
|
||||
* @todo Also an 'append' option to the storage function might be a useful addition.
|
||||
*/
|
||||
|
||||
require_once('include/permissions.php');
|
||||
|
@ -123,7 +124,7 @@ function z_mime_content_type($filename) {
|
|||
* @param string $hash (optional)
|
||||
* @param string $filename (optional)
|
||||
* @param string $filetype (optional)
|
||||
* @return assoziative array with:
|
||||
* @return associative array with:
|
||||
* * \e boolean \b success
|
||||
* * \e int|boolean \b results amount of found results, or false
|
||||
* * \e string \b message with error messages if any
|
||||
|
@ -161,7 +162,7 @@ function attach_count_files($channel_id, $observer, $hash = '', $filename = '',
|
|||
|
||||
/**
|
||||
* @brief Returns a list of files/attachments.
|
||||
*
|
||||
*
|
||||
* @param $channel_id
|
||||
* @param $observer
|
||||
* @param $hash (optional)
|
||||
|
@ -170,10 +171,10 @@ function attach_count_files($channel_id, $observer, $hash = '', $filename = '',
|
|||
* @param $orderby
|
||||
* @param $start
|
||||
* @param $entries
|
||||
* @return array
|
||||
* $ret['success'] boolean
|
||||
* $ret['results'] array with results, or false
|
||||
* $ret['message'] string with error messages if any
|
||||
* @return associative array with:
|
||||
* * \e boolean \b success
|
||||
* * \e array|boolean \b results array with results, or false
|
||||
* * \e string \b message with error messages if any
|
||||
*/
|
||||
function attach_list_files($channel_id, $observer, $hash = '', $filename = '', $filetype = '', $orderby = 'created desc', $start = 0, $entries = 0) {
|
||||
|
||||
|
@ -213,11 +214,11 @@ function attach_list_files($channel_id, $observer, $hash = '', $filename = '', $
|
|||
|
||||
/**
|
||||
* @brief Find an attachment by hash and revision.
|
||||
*
|
||||
*
|
||||
* Returns the entire attach structure including data.
|
||||
*
|
||||
*
|
||||
* This could exhaust memory so most useful only when immediately sending the data.
|
||||
*
|
||||
*
|
||||
* @param string $hash
|
||||
* @param int $rev Revision
|
||||
* @return array
|
||||
|
@ -275,7 +276,7 @@ function attach_by_hash($hash, $rev = 0) {
|
|||
* @see attach_by_hash()
|
||||
* @param $hash
|
||||
* @param $rev revision default 0
|
||||
* @return array Everything except data.
|
||||
* @return associative array with everything except data
|
||||
* * \e boolean \b success boolean true or false
|
||||
* * \e string \b message (optional) only when success is false
|
||||
* * \e array \b data array of attach DB entry without data component
|
||||
|
@ -326,12 +327,18 @@ function attach_by_hash_nodata($hash, $rev = 0) {
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
* @brief Stores an attachment from a POST file upload.
|
||||
*
|
||||
* @param $channel channel array of owner
|
||||
* @param $observer_hash hash of current observer
|
||||
* @param $options (optional)
|
||||
* @param $arr (optional)
|
||||
* This function stores an attachment. It can be a new one, a replacement or a
|
||||
* new revision depending on value set in \e $options.
|
||||
*
|
||||
* @note Requires an input field \e userfile and does not accept multiple files
|
||||
* in one request.
|
||||
*
|
||||
* @param array $channel channel array of owner
|
||||
* @param string $observer_hash hash of current observer
|
||||
* @param string $options (optional) one of update, replace, revision
|
||||
* @param array $arr (optional) associative array
|
||||
*/
|
||||
function attach_store($channel, $observer_hash, $options = '', $arr = null) {
|
||||
|
||||
|
@ -366,7 +373,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
|
|||
|
||||
if($options === 'replace') {
|
||||
/** @BUG $replace is undefined here */
|
||||
$x = q("select id, hash, filesize from attach where id = %d and uid = %d limit 1",
|
||||
$x = q("select id, hash, filesize from attach where id = %d and uid = %d limit 1",
|
||||
intval($replace),
|
||||
intval($channel_id)
|
||||
);
|
||||
|
@ -457,7 +464,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
|
|||
);
|
||||
}
|
||||
elseif($options === 'update') {
|
||||
$r = q("update attach set filename = '%s', filetype = '%s', edited = '%s',
|
||||
$r = q("update attach set filename = '%s', filetype = '%s', edited = '%s',
|
||||
allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s' where id = %d and uid = %d",
|
||||
dbesc((array_key_exists('filename',$arr)) ? $arr['filename'] : $x[0]['filename']),
|
||||
dbesc((array_key_exists('filetype',$arr)) ? $arr['filetype'] : $x[0]['filetype']),
|
||||
|
@ -551,7 +558,7 @@ function z_readdir($channel_id, $observer_hash, $pathname, $parent_hash = '') {
|
|||
intval(ATTACH_FLAG_DIR)
|
||||
);
|
||||
if(! $r) {
|
||||
$ret['message'] = t('Path not available.');
|
||||
$ret['message'] = t('Path not available.');
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
@ -621,7 +628,7 @@ function attach_mkdir($channel, $observer_hash, $arr = null) {
|
|||
|
||||
// Check for duplicate name.
|
||||
// Check both the filename and the hash as we will be making use of both.
|
||||
|
||||
|
||||
$r = q("select hash from attach where ( filename = '%s' or hash = '%s' ) and folder = '%s' and uid = %d limit 1",
|
||||
dbesc($arr['filename']),
|
||||
dbesc($arr['hash']),
|
||||
|
@ -644,7 +651,7 @@ function attach_mkdir($channel, $observer_hash, $arr = null) {
|
|||
$sql_options = permissions_sql($channel['channel_id']);
|
||||
|
||||
do {
|
||||
$r = q("select filename, hash, flags, folder from attach where uid = %d and hash = '%s' and ( flags & %d )>0
|
||||
$r = q("select filename, hash, flags, folder from attach where uid = %d and hash = '%s' and ( flags & %d )>0
|
||||
$sql_options limit 1",
|
||||
intval($channel['channel_id']),
|
||||
dbesc($lfile),
|
||||
|
@ -660,7 +667,7 @@ function attach_mkdir($channel, $observer_hash, $arr = null) {
|
|||
$lpath = $r[0]['hash'] . '/' . $lpath;
|
||||
$lfile = $r[0]['folder'];
|
||||
} while ( ($r[0]['folder']) && ($r[0]['flags'] & ATTACH_FLAG_DIR)) ;
|
||||
$path = $basepath . '/' . $lpath;
|
||||
$path = $basepath . '/' . $lpath;
|
||||
}
|
||||
else
|
||||
$path = $basepath . '/';
|
||||
|
@ -716,7 +723,7 @@ function attach_mkdir($channel, $observer_hash, $arr = null) {
|
|||
|
||||
/**
|
||||
* @brief Changes permissions of a file.
|
||||
*
|
||||
*
|
||||
* @param int $channel_id
|
||||
* @param array $resource
|
||||
* @param string $allow_cid
|
||||
|
@ -841,7 +848,7 @@ function attach_delete($channel_id, $resource) {
|
|||
* @warning This function cannot be used with mod/dav as it always returns a
|
||||
* path valid under mod/cloud.
|
||||
*
|
||||
* @param array $arr assoziative array with:
|
||||
* @param array $arr associative array with:
|
||||
* * \e int \b uid the channel's uid
|
||||
* * \e string \b folder
|
||||
* * \e string \b filename
|
||||
|
@ -866,7 +873,7 @@ function get_cloudpath($arr) {
|
|||
$lfile = $arr['folder'];
|
||||
|
||||
do {
|
||||
$r = q("select filename, hash, flags, folder from attach where uid = %d and hash = '%s' and ( flags & %d )>0
|
||||
$r = q("select filename, hash, flags, folder from attach where uid = %d and hash = '%s' and ( flags & %d )>0
|
||||
limit 1",
|
||||
intval($arr['uid']),
|
||||
dbesc($lfile),
|
||||
|
@ -961,7 +968,7 @@ function find_filename_by_hash($channel_id, $attachHash) {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param $in
|
||||
* @param $out
|
||||
*/
|
||||
|
@ -1212,6 +1219,7 @@ function recursive_activity_recipients($arr_allow_cid, $arr_allow_gid, $arr_deny
|
|||
|
||||
$ret = array();
|
||||
$parent_arr = array();
|
||||
$count_values = array();
|
||||
$poster = get_app()->get_observer();
|
||||
|
||||
//turn allow_gid into allow_cid's
|
||||
|
@ -1319,11 +1327,10 @@ function recursive_activity_recipients($arr_allow_cid, $arr_allow_gid, $arr_deny
|
|||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Returns members of a group
|
||||
* @brief Returns members of a group.
|
||||
*
|
||||
* @param $group_id
|
||||
* @param int $group_id id of the group to look up
|
||||
*/
|
||||
function in_group($group_id) {
|
||||
$group_members = array();
|
||||
|
|
|
@ -450,7 +450,7 @@ function format_event_diaspora($ev) {
|
|||
|
||||
$bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM
|
||||
|
||||
$o = t('Hubzilla event notification:') . "\n";
|
||||
$o = t('$Projectname event notification:') . "\n";
|
||||
|
||||
$o .= '**' . (($ev['summary']) ? bb2diaspora($ev['summary']) : bb2diaspora($ev['desc'])) . '**' . "\n";
|
||||
|
||||
|
|
|
@ -166,12 +166,19 @@ function comanche_block($s, $class = '') {
|
|||
intval($channel_id),
|
||||
dbesc($name)
|
||||
);
|
||||
|
||||
if($r) {
|
||||
$o .= (($var['wrap'] == 'none') ? '' : '<div class="' . $class . '">');
|
||||
if($r[0]['title'])
|
||||
$o .= '<h3>' . $r[0]['title'] . '</h3>';
|
||||
|
||||
$o .= prepare_text($r[0]['body'], $r[0]['mimetype']);
|
||||
if($r[0]['body'] === '$content') {
|
||||
$o .= prepare_text(get_app()->data['webpage'][0]['body'], get_app()->data['webpage'][0]['mimetype']);
|
||||
}
|
||||
else {
|
||||
$o .= prepare_text($r[0]['body'], $r[0]['mimetype']);
|
||||
}
|
||||
|
||||
$o .= (($var['wrap'] == 'none') ? '' : '</div>');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -706,8 +706,9 @@ function diaspora_request($importer,$xml) {
|
|||
$cnv = random_string();
|
||||
$mid = random_string();
|
||||
|
||||
$msg = t('You have started sharing with a Hubzilla premium channel.');
|
||||
$msg .= t('Hubzilla premium channels are not available for sharing with Diaspora members. This sharing request has been blocked.') . "\r";
|
||||
$msg = t('You have started sharing with a $Projectname premium channel.');
|
||||
$msg .= t('$Projectname premium channels are not available for sharing with Diaspora members. This sharing request has been blocked.') . "\r";
|
||||
|
||||
$msg .= t('Please do not reply to this message, as this channel is not sharing with you and any reply will not be seen by the recipient.') . "\r";
|
||||
|
||||
$created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d H:i:s \U\T\C');
|
||||
|
@ -2449,7 +2450,7 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
|
|||
'$handle' => xmlify($myaddr),
|
||||
'$public' => $public,
|
||||
'$created' => $created,
|
||||
'$provider' => (($item['app']) ? $item['app'] : 'hubzilla')
|
||||
'$provider' => (($item['app']) ? $item['app'] : t('$projectname'))
|
||||
));
|
||||
} else {
|
||||
$tpl = get_markup_template('diaspora_post.tpl');
|
||||
|
@ -2460,7 +2461,7 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
|
|||
'$handle' => xmlify($myaddr),
|
||||
'$public' => $public,
|
||||
'$created' => $created,
|
||||
'$provider' => (($item['app']) ? $item['app'] : 'hubzilla')
|
||||
'$provider' => (($item['app']) ? $item['app'] : t('$projectname'))
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -55,8 +55,8 @@ function notification($params) {
|
|||
|
||||
push_lang($recip['account_language']); // should probably have a channel language
|
||||
|
||||
$banner = t('Hubzilla Notification');
|
||||
$product = t('hubzilla'); // PLATFORM_NAME;
|
||||
$banner = t('$Projectname Notification');
|
||||
$product = t('$projectname'); // PLATFORM_NAME;
|
||||
$siteurl = $a->get_baseurl(true);
|
||||
$thanks = t('Thank You,');
|
||||
$sitename = get_config('system','sitename');
|
||||
|
|
66
include/environment.php
Normal file
66
include/environment.php
Normal file
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
/**
|
||||
* @file include/environment.php
|
||||
* @brief Functions related to system/environment tasks.
|
||||
*
|
||||
* This file contains some functions to check the environment/system.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Get some upload related limits from php.ini.
|
||||
*
|
||||
* This function returns values from php.ini like \b post_max_size,
|
||||
* \b max_file_uploads, \b upload_max_filesize.
|
||||
*
|
||||
* @return array associative array
|
||||
* * \e int \b post_max_size the maximum size of a complete POST in bytes
|
||||
* * \e int \b upload_max_filesize the maximum size of one file in bytes
|
||||
* * \e int \b max_file_uploads maximum number of files in one POST
|
||||
* * \e int \b max_upload_filesize min(post_max_size, upload_max_filesize)
|
||||
*/
|
||||
function getPhpiniUploadLimits() {
|
||||
$ret = array();
|
||||
|
||||
// max size of the complete POST
|
||||
$ret['post_max_size'] = phpiniSizeToBytes(ini_get('post_max_size'));
|
||||
// max size of one file
|
||||
$ret['upload_max_filesize'] = phpiniSizeToBytes(ini_get('upload_max_filesize'));
|
||||
// catch a configuration error where post_max_size < upload_max_filesize
|
||||
$ret['max_upload_filesize'] = min(
|
||||
$ret['post_max_size'],
|
||||
$ret['upload_max_filesize']
|
||||
);
|
||||
// maximum number of files in one POST
|
||||
$ret['max_file_uploads'] = intval(ini_get('max_file_uploads'));
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Parses php_ini size settings to bytes.
|
||||
*
|
||||
* This function parses common size setting from php.ini files to bytes.
|
||||
* e.g. post_max_size = 8M ==> 8388608
|
||||
*
|
||||
* \note This method does not recognise other human readable formats like
|
||||
* 8MB, etc.
|
||||
*
|
||||
* @todo Make this function more universal useable. MB, T, etc.
|
||||
*
|
||||
* @param string $val value from php.ini e.g. 2M, 8M
|
||||
* @return int size in bytes
|
||||
*/
|
||||
function phpiniSizeToBytes($val) {
|
||||
$val = trim($val);
|
||||
$unit = strtolower($val[strlen($val)-1]);
|
||||
switch($unit) {
|
||||
case 'g':
|
||||
$val *= 1024;
|
||||
case 'm':
|
||||
$val *= 1024;
|
||||
case 'k':
|
||||
$val *= 1024;
|
||||
}
|
||||
|
||||
return (int)$val;
|
||||
}
|
|
@ -20,19 +20,21 @@ class FKOAuthDataStore extends OAuthDataStore {
|
|||
logger(__function__.":".$consumer_key);
|
||||
// echo "<pre>"; var_dump($consumer_key); killme();
|
||||
|
||||
$r = q("SELECT client_id, pw, redirect_uri FROM clients WHERE client_id='%s'",
|
||||
$r = q("SELECT client_id, pw, redirect_uri FROM clients WHERE client_id = '%s'",
|
||||
dbesc($consumer_key)
|
||||
);
|
||||
|
||||
if (count($r))
|
||||
if($r) {
|
||||
get_app()->set_oauth_key($consumer_key);
|
||||
return new OAuthConsumer($r[0]['client_id'],$r[0]['pw'],$r[0]['redirect_uri']);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function lookup_token($consumer, $token_type, $token) {
|
||||
logger(__function__.":".$consumer.", ". $token_type.", ".$token);
|
||||
|
||||
$r = q("SELECT id, secret,scope, expires, uid FROM tokens WHERE client_id='%s' AND scope='%s' AND id='%s'",
|
||||
$r = q("SELECT id, secret, scope, expires, uid FROM tokens WHERE client_id = '%s' AND scope = '%s' AND id = '%s'",
|
||||
dbesc($consumer->key),
|
||||
dbesc($token_type),
|
||||
dbesc($token)
|
||||
|
@ -51,7 +53,7 @@ class FKOAuthDataStore extends OAuthDataStore {
|
|||
function lookup_nonce($consumer, $token, $nonce, $timestamp) {
|
||||
// echo __file__.":".__line__."<pre>"; var_dump($consumer,$key); killme();
|
||||
|
||||
$r = q("SELECT id, secret FROM tokens WHERE client_id='%s' AND id='%s' AND expires=%d",
|
||||
$r = q("SELECT id, secret FROM tokens WHERE client_id = '%s' AND id = '%s' AND expires = %d",
|
||||
dbesc($consumer->key),
|
||||
dbesc($nonce),
|
||||
intval($timestamp)
|
||||
|
@ -132,6 +134,7 @@ class FKOAuthDataStore extends OAuthDataStore {
|
|||
}
|
||||
|
||||
class FKOAuth1 extends OAuthServer {
|
||||
|
||||
function __construct() {
|
||||
parent::__construct(new FKOAuthDataStore());
|
||||
$this->add_signature_method(new OAuthSignatureMethod_PLAINTEXT());
|
||||
|
|
|
@ -65,6 +65,10 @@ function get_perms() {
|
|||
*/
|
||||
function get_all_perms($uid, $observer_xchan, $internal_use = true) {
|
||||
|
||||
$api = get_app()->get_oauth_key();
|
||||
if($api)
|
||||
return get_all_api_perms($uid,$api);
|
||||
|
||||
$global_perms = get_perms();
|
||||
|
||||
// Save lots of individual lookups
|
||||
|
@ -265,6 +269,10 @@ function get_all_perms($uid, $observer_xchan, $internal_use = true) {
|
|||
*/
|
||||
function perm_is_allowed($uid, $observer_xchan, $permission) {
|
||||
|
||||
$api = get_app()->get_oauth_key();
|
||||
if($api)
|
||||
return api_perm_is_allowed($uid,$api,$permission);
|
||||
|
||||
$arr = array(
|
||||
'channel_id' => $uid,
|
||||
'observer_hash' => $observer_xchan,
|
||||
|
@ -388,6 +396,82 @@ function perm_is_allowed($uid, $observer_xchan, $permission) {
|
|||
return false;
|
||||
}
|
||||
|
||||
function get_all_api_perms($uid,$api) {
|
||||
|
||||
$global_perms = get_perms();
|
||||
|
||||
$ret = array();
|
||||
|
||||
$r = q("select * from xperm where xp_client = '%s' and xp_channel = %d",
|
||||
dbesc($api),
|
||||
intval($uid)
|
||||
);
|
||||
|
||||
if(! $r)
|
||||
return false;
|
||||
|
||||
$allow_all = false;
|
||||
$allowed = array();
|
||||
foreach($r as $rr) {
|
||||
if($rr['xp_perm'] === 'all')
|
||||
$allow_all = true;
|
||||
if(! in_array($rr['xp_perm'],$allowed))
|
||||
$allowed[] = $rr['xp_perm'];
|
||||
}
|
||||
|
||||
foreach($global_perms as $perm_name => $permission) {
|
||||
if($allow_all || in_array($perm_name,$allowed))
|
||||
$ret[$perm_name] = true;
|
||||
else
|
||||
$ret[$perm_name] = false;
|
||||
|
||||
}
|
||||
|
||||
$arr = array(
|
||||
'channel_id' => $uid,
|
||||
'observer_hash' => $observer_xchan,
|
||||
'permissions' => $ret);
|
||||
|
||||
call_hooks('get_all_api_perms',$arr);
|
||||
|
||||
return $arr['permissions'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
function api_perm_is_allowed($uid,$api,$permission) {
|
||||
|
||||
$arr = array(
|
||||
'channel_id' => $uid,
|
||||
'observer_hash' => $observer_xchan,
|
||||
'permission' => $permission,
|
||||
'result' => false
|
||||
);
|
||||
|
||||
call_hooks('api_perm_is_allowed', $arr);
|
||||
if($arr['result'])
|
||||
return true;
|
||||
|
||||
$r = q("select * from xperm where xp_client = '%s' and xp_channel = %d and ( xp_perm = 'all' OR xp_perm = '%s' )",
|
||||
dbesc($api),
|
||||
intval($uid),
|
||||
dbesc($permission)
|
||||
);
|
||||
|
||||
if(! $r)
|
||||
return false;
|
||||
|
||||
foreach($r as $rr) {
|
||||
if($rr['xp_perm'] === 'all' || $rr['xp_perm'] === $permission)
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Check a simple array of observers against a permissions
|
||||
// return a simple array of those with permission
|
||||
|
|
|
@ -232,7 +232,7 @@ function admin_page_summary(&$a) {
|
|||
$alertmsg = '';
|
||||
// annoy admin about upcoming unsupported PHP version
|
||||
if (version_compare(PHP_VERSION, '5.4', '<')) {
|
||||
$alertmsg = 'Your PHP version ' . PHP_VERSION . ' will not be supported with the next major release of Hubzilla. You are strongly urged to upgrade to a current version.'
|
||||
$alertmsg = 'Your PHP version ' . PHP_VERSION . ' will not be supported with the next major release of $Projectname. You are strongly urged to upgrade to a current version.'
|
||||
. '<br>PHP 5.3 has reached its <a href="http://php.net/eol.php" class="alert-link">End of Life (EOL)</a> in August 2014.'
|
||||
. ' A list about current PHP versions can be found <a href="http://php.net/supported-versions.php" class="alert-link">here</a>.';
|
||||
}
|
||||
|
|
|
@ -117,7 +117,7 @@ function cloud_init(&$a) {
|
|||
|
||||
if ((! $auth->observer) && (! $isapublic_file) && (! $davguest)) {
|
||||
try {
|
||||
$auth->Authenticate($server, t('Hubzilla - Guests: Username: {your email address}, Password: +++'));
|
||||
$auth->Authenticate($server, t('$Projectname - Guests: Username: {your email address}, Password: +++'));
|
||||
}
|
||||
catch (Exception $e) {
|
||||
logger('mod_cloud: auth exception' . $e->getMessage());
|
||||
|
|
|
@ -118,7 +118,7 @@ function dav_init(&$a) {
|
|||
|
||||
if ((! $auth->observer) && (! $isapublic_file) && (! $davguest)) {
|
||||
try {
|
||||
$auth->Authenticate($server, t('Hubzilla channel'));
|
||||
$auth->Authenticate($server, t('$Projectname channel'));
|
||||
}
|
||||
catch (Exception $e) {
|
||||
logger('mod_cloud: auth exception' . $e->getMessage());
|
||||
|
|
|
@ -50,7 +50,7 @@ function home_content(&$a, $update = 0, $load = false) {
|
|||
if(get_config('system','projecthome')) {
|
||||
$o .= file_get_contents('assets/home.html');
|
||||
$a->page['template'] = 'full';
|
||||
$a->page['title'] = t('Hubzilla - "The Network"');
|
||||
$a->page['title'] = t('$Projectname');
|
||||
return $o;
|
||||
}
|
||||
|
||||
|
|
|
@ -129,12 +129,12 @@ function invite_content(&$a) {
|
|||
'$invite' => t('Send invitations'),
|
||||
'$addr_text' => t('Enter email addresses, one per line:'),
|
||||
'$msg_text' => t('Your message:'),
|
||||
'$default_message' => t('Please join my community on Hubzilla.') . "\r\n" . "\r\n"
|
||||
'$default_message' => t('Please join my community on $Projectname.') . "\r\n" . "\r\n"
|
||||
. $linktxt
|
||||
. (($invonly) ? "\r\n" . "\r\n" . t('You will need to supply this invitation code: ') . $invite_code . "\r\n" . "\r\n" : '')
|
||||
. t('1. Register at any Hubzilla location (they are all inter-connected)')
|
||||
. t('1. Register at any $Projectname location (they are all inter-connected)')
|
||||
. "\r\n" . "\r\n" . z_root() . '/register'
|
||||
. "\r\n" . "\r\n" . t('2. Enter my Hubzilla network address into the site searchbar.')
|
||||
. "\r\n" . "\r\n" . t('2. Enter my $Projectname network address into the site searchbar.')
|
||||
. "\r\n" . "\r\n" . $ob['xchan_addr'] . ' (' . t('or visit ') . z_root() . '/channel/' . $channel['channel_address'] . ')'
|
||||
. "\r\n" . "\r\n"
|
||||
. t('3. Click [Connect]')
|
||||
|
|
|
@ -18,7 +18,7 @@ function like_content(&$a) {
|
|||
if(! $observer) {
|
||||
$_SESSION['return_url'] = $a->query_string;
|
||||
$o .= t('This action is restricted to members.') . EOL;
|
||||
$o .= t('Please <a href="rmagic">login with your Hubzilla ID</a> or <a href="register">register as a new Redmatrix.member</a> to continue.') . EOL;
|
||||
$o .= t('Please <a href="rmagic">login with your $Projectname ID</a> or <a href="register">register as a new $Projectname member</a> to continue.') . EOL;
|
||||
return $o;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -159,7 +159,7 @@ function mitem_content(&$a) {
|
|||
'$permdesc' => t("\x28click to open/close\x29"),
|
||||
'$aclselect' => populate_acl($perm_defaults,false),
|
||||
'$mitem_desc' => array('mitem_desc', t('Link Name'), '', 'Visible name of the link','*'),
|
||||
'$mitem_link' => array('mitem_link', t('Link or Submenu Target'), '', 'Enter URL of the link or select a menu name to create a submenu', '*', 'list="menu-names"'),
|
||||
'$mitem_link' => array('mitem_link', t('Link or Submenu Target'), '', t('Enter URL of the link or select a menu name to create a submenu'), '*', 'list="menu-names"'),
|
||||
'$usezid' => array('usezid', t('Use magic-auth if available'), true, ''),
|
||||
'$newwin' => array('newwin', t('Open link in new window'), false,''),
|
||||
'$mitem_order' => array('mitem_order', t('Order in list'),'0',t('Higher numbers will sink to bottom of listing')),
|
||||
|
@ -230,8 +230,8 @@ function mitem_content(&$a) {
|
|||
'$aclselect' => populate_acl($mitem,false),
|
||||
'$mitem_id' => intval(argv(2)),
|
||||
'$mitem_desc' => array('mitem_desc', t('Link text'), $mitem['mitem_desc'], '','*'),
|
||||
'$mitem_link' => array('mitem_link', t('Link or Submenu Target'), $mitem['mitem_link'], t('Enter URL of the link or select a menu name to create a submenu'), '*', 'list="menu-name"'),
|
||||
'$usezid' => array('usezid', t('Use Hubzilla magic-auth if available'), (($mitem['mitem_flags'] & MENU_ITEM_ZID) ? 1 : 0), ''),
|
||||
'$mitem_link' => array('mitem_link', t('Link or Submenu Target'), $mitem['mitem_link'], 'Enter URL of the link or select a menu name to create a submenu', '*', 'list="menu-names"'),
|
||||
'$usezid' => array('usezid', t('Use magic-auth if available'), (($mitem['mitem_flags'] & MENU_ITEM_ZID) ? 1 : 0), ''),
|
||||
'$newwin' => array('newwin', t('Open link in new window'), (($mitem['mitem_flags'] & MENU_ITEM_NEWWIN) ? 1 : 0),''),
|
||||
'$mitem_order' => array('mitem_order', t('Order in list'),$mitem['mitem_order'],t('Higher numbers will sink to bottom of listing')),
|
||||
'$submit' => t('Submit'),
|
||||
|
|
|
@ -42,7 +42,7 @@ function p_init(&$a) {
|
|||
'$handle' => xmlify($myaddr),
|
||||
'$public' => 'true',
|
||||
'$created' => $created,
|
||||
'$provider' => (($item['app']) ? $item['app'] : 'hubzilla')
|
||||
'$provider' => (($item['app']) ? $item['app'] : t('$projectname'))
|
||||
));
|
||||
|
||||
header('Content-type: text/xml');
|
||||
|
|
|
@ -16,7 +16,7 @@ function pubsites_content(&$a) {
|
|||
$o .= '<h1>' . t('Public Sites') . '</h1>';
|
||||
|
||||
$o .= '<div class="descriptive-text">' .
|
||||
t('The listed sites allow public registration into the Hubzilla. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details.') . '</div>' . EOL;
|
||||
t('The listed sites allow public registration for the $Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details.') . '</div>' . EOL;
|
||||
|
||||
$ret = z_fetch_url($url);
|
||||
if($ret['success']) {
|
||||
|
|
|
@ -163,9 +163,7 @@ function setup_content(&$a) {
|
|||
global $install_wizard_pass, $db;
|
||||
$o = '';
|
||||
$wizard_status = "";
|
||||
$install_title = t('Hubzilla Server - Setup');
|
||||
|
||||
|
||||
$install_title = t('$Projectname Server - Setup');
|
||||
|
||||
if(x($a->data,'db_conn_failed')) {
|
||||
$install_wizard_pass = 2;
|
||||
|
@ -287,7 +285,7 @@ function setup_content(&$a) {
|
|||
$o .= replace_macros($tpl, array(
|
||||
'$title' => $install_title,
|
||||
'$pass' => t('Database connection'),
|
||||
'$info_01' => t('In order to install Hubzilla we need to know how to connect to your database.'),
|
||||
'$info_01' => t('In order to install $Projectname we need to know how to connect to your database.'),
|
||||
'$info_02' => t('Please contact your hosting provider or site administrator if you have questions about these settings.'),
|
||||
'$info_03' => t('The database you specify below should already exist. If it does not, please create it before continuing.'),
|
||||
|
||||
|
|
|
@ -152,8 +152,8 @@ function siteinfo_content(&$a) {
|
|||
$donate .= file_get_contents('doc/site_donate.html');
|
||||
|
||||
$o = replace_macros(get_markup_template('siteinfo.tpl'), array(
|
||||
'$title' => t('Red'),
|
||||
'$description' => t('This is a hub of hubzilla - a global cooperative network of decentralized privacy enhanced websites.'),
|
||||
'$title' => t('$Projectname'),
|
||||
'$description' => t('This is a hub of $Projectname - a global cooperative network of decentralized privacy enhanced websites.'),
|
||||
'$version' => $version,
|
||||
'$tag_txt' => t('Tag: '),
|
||||
'$tag' => $tag,
|
||||
|
@ -161,11 +161,11 @@ function siteinfo_content(&$a) {
|
|||
'$lastpoll' => get_poller_runtime(),
|
||||
'$commit' => $commit,
|
||||
'$web_location' => t('Running at web location') . ' ' . z_root(),
|
||||
'$visit' => t('Please visit <a href="https://redmatrix.me">redmatrix.me</a> to learn more about the Hubzilla.'),
|
||||
'$visit' => t('Please visit <a href="https://redmatrix.me">redmatrix.me</a> to learn more about $Projectname.'),
|
||||
'$bug_text' => t('Bug reports and issues: please visit'),
|
||||
'$bug_link_url' => 'https://github.com/redmatrix/hubzilla/issues',
|
||||
'$bug_link_text' => 'hubzilla issues',
|
||||
'$contact' => t('Suggestions, praise, etc. - please email "hubzilla" at librelist - dot com'),
|
||||
'$bug_link_text' => '$projectname issues',
|
||||
'$contact' => t('Suggestions, praise, etc. - please email "redmatrix" at librelist - dot com'),
|
||||
'$donate' => $donate,
|
||||
'$adminlabel' => t('Site Administrators'),
|
||||
'$admininfo' => $admininfo,
|
||||
|
|
649
util/messages.po
649
util/messages.po
File diff suppressed because it is too large
Load diff
|
@ -128,7 +128,7 @@ FO_statuses_update () {
|
|||
$(OAuth_param 'status' "$2")
|
||||
)
|
||||
|
||||
params[${#params[@]}]=$(OAuth_param 'source' "shred")
|
||||
params[${#params[@]}]=$(OAuth_param 'source' "shredder")
|
||||
|
||||
[[ "$3" != "" ]] && params[${#params[@]}]=$(OAuth_param 'in_reply_to_status_id' "$3") && local in_reply_to_status_id=( '--data-urlencode' "in_reply_to_status_id=$3" )
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
2015-05-14.1032
|
||||
2015-05-17.1035
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
Apreciat/da $username,
|
||||
Apreciat/da {{$username}},
|
||||
|
||||
S'ha rebut una sol·licitud en $sitename recentment per restablir
|
||||
S'ha rebut una sol·licitud en {{$sitename}} recentment per restablir
|
||||
la teva contrasenya. Per confirmar aquesta sol·licitud, per favor seleccioni l'enllaç de
|
||||
verificació sota o copia-ho i pega-ho en la barra d'adreces del teu navegador.
|
||||
|
||||
|
@ -13,7 +13,7 @@ va emetre aquesta sol·licitud.
|
|||
|
||||
Segueix aquest enllaç per verificar la teva identitat:
|
||||
|
||||
$reset_link
|
||||
{{$reset_link}}
|
||||
|
||||
A continuació rebràs un missatge amb la nova contrasenya.
|
||||
|
||||
|
@ -23,13 +23,13 @@ configuració.
|
|||
Les dades d'accés són els següents:
|
||||
|
||||
|
||||
Lloc: $siteurl
|
||||
Nom: $email
|
||||
Lloc: {{$siteurl}}
|
||||
Nom: {{$email}}
|
||||
|
||||
|
||||
|
||||
|
||||
Salutacions,
|
||||
L'administració de $sitename
|
||||
L'administració de {{$sitename}}
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
Apreciat/da $username,
|
||||
Apreciat/da {{$username}},
|
||||
|
||||
La teva contrasenya ha estat modificada com has sol·licitat. Pren nota d'aquesta informació
|
||||
(o canvía immediatament la contrasenya amb quelcom que recordis).
|
||||
|
@ -7,13 +7,13 @@ Apreciat/da $username,
|
|||
|
||||
Les teves dades d'accés son les següents:
|
||||
|
||||
Lloc: $siteurl
|
||||
Nom: $email
|
||||
Contrasenya: $new_password
|
||||
Lloc: {{$siteurl}}
|
||||
Nom: {{$email}}
|
||||
Contrasenya: {{$new_password}}
|
||||
|
||||
Després d'accedir pots canviar la contrasenya des de la pàgina de configuració del teu perfil.
|
||||
|
||||
|
||||
$sitename
|
||||
{{$sitename}}
|
||||
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
|
||||
Apreciat/da $username,
|
||||
Apreciat/da {{$username}},
|
||||
|
||||
Gràcies per registrar-te en $sitename. El teu compte ha estat creat.
|
||||
Gràcies per registrar-te en {{$sitename}}. El teu compte ha estat creat.
|
||||
|
||||
|
||||
Les dades d'accés són les següents:
|
||||
|
||||
|
||||
Lloc: $siteurl
|
||||
Nom: $email
|
||||
Contrasenya: $password
|
||||
Lloc: {{$siteurl}}
|
||||
Nom: {{$email}}
|
||||
Contrasenya: {{$password}}
|
||||
|
||||
|
||||
Després d'accedir pots canviar la teva contrasenya a la pàgina de "Configuració".
|
||||
|
@ -17,6 +17,6 @@ Després d'accedir pots canviar la teva contrasenya a la pàgina de "Configuraci
|
|||
Pren un moment per revisar les altres configuracions del compte en aquesta pàgina.
|
||||
|
||||
|
||||
Gràcies i benvingut/da $sitename.
|
||||
Gràcies i benvingut/da {{$sitename}}.
|
||||
|
||||
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
|
||||
S'ha rebut la sol·licitud de registre d'un nou usuari en
|
||||
$sitename que requereix la teva aprovació.
|
||||
{{$sitename}} que requereix la teva aprovació.
|
||||
|
||||
Les dades d'accés són els següents:
|
||||
|
||||
Nom Complet: $username
|
||||
Lloc: $siteurl
|
||||
Nom: $email
|
||||
Nom Complet: {{$username}}
|
||||
Lloc: {{$siteurl}}
|
||||
Nom: {{$email}}
|
||||
|
||||
|
||||
Per aprovar aquesta sol·licitud, visita el següent enllaç:
|
||||
|
||||
$siteurl/regmod/allow/$hash
|
||||
{{$siteurl}}/regmod/allow/{{$hash}}
|
||||
|
||||
Per denegar la sol·licitud i eliminar el compte, per favor visita:
|
||||
|
||||
$siteurl/regmod/deny/$hash
|
||||
{{$siteurl}}/regmod/deny/{{$hash}}
|
||||
|
||||
|
||||
Gràcies.
|
||||
|
|
Loading…
Reference in a new issue