mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-20 06:35:15 +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)
|
![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 $observer = null; // xchan record of the page observer
|
||||||
public $profile_uid = 0; // If applicable, the channel_id of the "page owner"
|
public $profile_uid = 0; // If applicable, the channel_id of the "page owner"
|
||||||
public $poi = null; // "person of interest", generally a referenced connection
|
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 $layout = array(); // Comanche parsed template
|
||||||
public $pdl = null;
|
public $pdl = null;
|
||||||
private $perms = null; // observer permissions
|
private $perms = null; // observer permissions
|
||||||
|
@ -888,6 +889,7 @@ class App {
|
||||||
$this->observer = $xchan;
|
$this->observer = $xchan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function get_observer() {
|
function get_observer() {
|
||||||
return $this->observer;
|
return $this->observer;
|
||||||
}
|
}
|
||||||
|
@ -900,6 +902,14 @@ class App {
|
||||||
return $this->perms;
|
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() {
|
function get_apps() {
|
||||||
return $this->apps;
|
return $this->apps;
|
||||||
}
|
}
|
||||||
|
@ -2093,7 +2103,9 @@ function construct_page(&$a) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// And a couple of convenience macros
|
// And a couple of convenience macros
|
||||||
|
if(strpos($v, '$htmlhead') !== false) {
|
||||||
|
$v = str_replace('$htmlhead', $a->page['htmlhead'], $v);
|
||||||
|
}
|
||||||
if(strpos($v, '$nav') !== false) {
|
if(strpos($v, '$nav') !== false) {
|
||||||
$v = str_replace('$nav', $a->page['nav'], $v);
|
$v = str_replace('$nav', $a->page['nav'], $v);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
|
|
||||||
Hubzilla - Hub Deployment Platform
|
Hubzilla
|
||||||
==================================
|
========
|
||||||
|
|
||||||
|
###Websites. Redefined.
|
||||||
|
|
||||||
|
|
||||||
![Hubzilla](images/ghash-32.png)
|
![Hubzilla](images/ghash-32.png)
|
||||||
|
|
||||||
|
|
||||||
**What are Hubs?**
|
**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.
|
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
|
* forums
|
||||||
* dating websites
|
* 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.
|
* 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]Integrate the "open site" list with the register page[/li]
|
||||||
[li]implement oembed provider interface[/li]
|
[li]implement oembed provider interface[/li]
|
||||||
[li]refactor the oembed client interface so that we can safely sandbox remote content[/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 layouts[/li]
|
||||||
[li]Write more webpage widgets[/li]
|
[li]Write more webpage widgets[/li]
|
||||||
[li]restricted access OAuth clients[/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());
|
// list($consumer,$token) = $oauth->verify_request(OAuthRequest::from_request());
|
||||||
if (!is_null($token)){
|
if (!is_null($token)){
|
||||||
$oauth->loginUser($token->uid);
|
$oauth->loginUser($token->uid);
|
||||||
|
|
||||||
|
$a->set_oauth_key($consumer->key);
|
||||||
|
|
||||||
call_hooks('logged_in', $a->user);
|
call_hooks('logged_in', $a->user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
echo __file__.__line__.__function__."<pre>";
|
echo __file__.__line__.__function__."<pre>";
|
||||||
var_dump($consumer, $token);
|
// var_dump($consumer, $token);
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
catch(Exception $e) {
|
catch(Exception $e) {
|
||||||
|
|
|
@ -4,10 +4,11 @@
|
||||||
*
|
*
|
||||||
* @brief File/attach API with the potential for revision control.
|
* @brief File/attach API with the potential for revision control.
|
||||||
*
|
*
|
||||||
* @TODO: a filesystem storage abstraction which maintains security (and 'data' contains a system filename
|
* @TODO A filesystem storage abstraction which maintains security (and 'data'
|
||||||
* which is inaccessible from the web). This could get around PHP storage limits and store videos and larger
|
* contains a system filename which is inaccessible from the web). This could
|
||||||
* items, using fread or OS methods or native code to read/write or chunk it through.
|
* get around PHP storage limits and store videos and larger items, using fread
|
||||||
* Also an 'append' option to the storage function might be a useful addition.
|
* 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');
|
require_once('include/permissions.php');
|
||||||
|
@ -123,7 +124,7 @@ function z_mime_content_type($filename) {
|
||||||
* @param string $hash (optional)
|
* @param string $hash (optional)
|
||||||
* @param string $filename (optional)
|
* @param string $filename (optional)
|
||||||
* @param string $filetype (optional)
|
* @param string $filetype (optional)
|
||||||
* @return assoziative array with:
|
* @return associative array with:
|
||||||
* * \e boolean \b success
|
* * \e boolean \b success
|
||||||
* * \e int|boolean \b results amount of found results, or false
|
* * \e int|boolean \b results amount of found results, or false
|
||||||
* * \e string \b message with error messages if any
|
* * \e string \b message with error messages if any
|
||||||
|
@ -170,10 +171,10 @@ function attach_count_files($channel_id, $observer, $hash = '', $filename = '',
|
||||||
* @param $orderby
|
* @param $orderby
|
||||||
* @param $start
|
* @param $start
|
||||||
* @param $entries
|
* @param $entries
|
||||||
* @return array
|
* @return associative array with:
|
||||||
* $ret['success'] boolean
|
* * \e boolean \b success
|
||||||
* $ret['results'] array with results, or false
|
* * \e array|boolean \b results array with results, or false
|
||||||
* $ret['message'] string with error messages if any
|
* * \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) {
|
function attach_list_files($channel_id, $observer, $hash = '', $filename = '', $filetype = '', $orderby = 'created desc', $start = 0, $entries = 0) {
|
||||||
|
|
||||||
|
@ -275,7 +276,7 @@ function attach_by_hash($hash, $rev = 0) {
|
||||||
* @see attach_by_hash()
|
* @see attach_by_hash()
|
||||||
* @param $hash
|
* @param $hash
|
||||||
* @param $rev revision default 0
|
* @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 boolean \b success boolean true or false
|
||||||
* * \e string \b message (optional) only when success is false
|
* * \e string \b message (optional) only when success is false
|
||||||
* * \e array \b data array of attach DB entry without data component
|
* * \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
|
* This function stores an attachment. It can be a new one, a replacement or a
|
||||||
* @param $observer_hash hash of current observer
|
* new revision depending on value set in \e $options.
|
||||||
* @param $options (optional)
|
*
|
||||||
* @param $arr (optional)
|
* @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) {
|
function attach_store($channel, $observer_hash, $options = '', $arr = null) {
|
||||||
|
|
||||||
|
@ -841,7 +848,7 @@ function attach_delete($channel_id, $resource) {
|
||||||
* @warning This function cannot be used with mod/dav as it always returns a
|
* @warning This function cannot be used with mod/dav as it always returns a
|
||||||
* path valid under mod/cloud.
|
* 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 int \b uid the channel's uid
|
||||||
* * \e string \b folder
|
* * \e string \b folder
|
||||||
* * \e string \b filename
|
* * \e string \b filename
|
||||||
|
@ -1212,6 +1219,7 @@ function recursive_activity_recipients($arr_allow_cid, $arr_allow_gid, $arr_deny
|
||||||
|
|
||||||
$ret = array();
|
$ret = array();
|
||||||
$parent_arr = array();
|
$parent_arr = array();
|
||||||
|
$count_values = array();
|
||||||
$poster = get_app()->get_observer();
|
$poster = get_app()->get_observer();
|
||||||
|
|
||||||
//turn allow_gid into allow_cid's
|
//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;
|
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) {
|
function in_group($group_id) {
|
||||||
$group_members = array();
|
$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
|
$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";
|
$o .= '**' . (($ev['summary']) ? bb2diaspora($ev['summary']) : bb2diaspora($ev['desc'])) . '**' . "\n";
|
||||||
|
|
||||||
|
|
|
@ -166,12 +166,19 @@ function comanche_block($s, $class = '') {
|
||||||
intval($channel_id),
|
intval($channel_id),
|
||||||
dbesc($name)
|
dbesc($name)
|
||||||
);
|
);
|
||||||
|
|
||||||
if($r) {
|
if($r) {
|
||||||
$o .= (($var['wrap'] == 'none') ? '' : '<div class="' . $class . '">');
|
$o .= (($var['wrap'] == 'none') ? '' : '<div class="' . $class . '">');
|
||||||
if($r[0]['title'])
|
if($r[0]['title'])
|
||||||
$o .= '<h3>' . $r[0]['title'] . '</h3>';
|
$o .= '<h3>' . $r[0]['title'] . '</h3>';
|
||||||
|
|
||||||
|
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 .= prepare_text($r[0]['body'], $r[0]['mimetype']);
|
||||||
|
}
|
||||||
|
|
||||||
$o .= (($var['wrap'] == 'none') ? '' : '</div>');
|
$o .= (($var['wrap'] == 'none') ? '' : '</div>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -706,8 +706,9 @@ function diaspora_request($importer,$xml) {
|
||||||
$cnv = random_string();
|
$cnv = random_string();
|
||||||
$mid = random_string();
|
$mid = random_string();
|
||||||
|
|
||||||
$msg = t('You have started sharing with a Hubzilla premium channel.');
|
$msg = t('You have started sharing with a $Projectname premium channel.');
|
||||||
$msg .= t('Hubzilla premium channels are not available for sharing with Diaspora members. This sharing request has been blocked.') . "\r";
|
$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";
|
$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');
|
$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),
|
'$handle' => xmlify($myaddr),
|
||||||
'$public' => $public,
|
'$public' => $public,
|
||||||
'$created' => $created,
|
'$created' => $created,
|
||||||
'$provider' => (($item['app']) ? $item['app'] : 'hubzilla')
|
'$provider' => (($item['app']) ? $item['app'] : t('$projectname'))
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
$tpl = get_markup_template('diaspora_post.tpl');
|
$tpl = get_markup_template('diaspora_post.tpl');
|
||||||
|
@ -2460,7 +2461,7 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
|
||||||
'$handle' => xmlify($myaddr),
|
'$handle' => xmlify($myaddr),
|
||||||
'$public' => $public,
|
'$public' => $public,
|
||||||
'$created' => $created,
|
'$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
|
push_lang($recip['account_language']); // should probably have a channel language
|
||||||
|
|
||||||
$banner = t('Hubzilla Notification');
|
$banner = t('$Projectname Notification');
|
||||||
$product = t('hubzilla'); // PLATFORM_NAME;
|
$product = t('$projectname'); // PLATFORM_NAME;
|
||||||
$siteurl = $a->get_baseurl(true);
|
$siteurl = $a->get_baseurl(true);
|
||||||
$thanks = t('Thank You,');
|
$thanks = t('Thank You,');
|
||||||
$sitename = get_config('system','sitename');
|
$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);
|
logger(__function__.":".$consumer_key);
|
||||||
// echo "<pre>"; var_dump($consumer_key); killme();
|
// 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)
|
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 new OAuthConsumer($r[0]['client_id'],$r[0]['pw'],$r[0]['redirect_uri']);
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function lookup_token($consumer, $token_type, $token) {
|
function lookup_token($consumer, $token_type, $token) {
|
||||||
logger(__function__.":".$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($consumer->key),
|
||||||
dbesc($token_type),
|
dbesc($token_type),
|
||||||
dbesc($token)
|
dbesc($token)
|
||||||
|
@ -51,7 +53,7 @@ class FKOAuthDataStore extends OAuthDataStore {
|
||||||
function lookup_nonce($consumer, $token, $nonce, $timestamp) {
|
function lookup_nonce($consumer, $token, $nonce, $timestamp) {
|
||||||
// echo __file__.":".__line__."<pre>"; var_dump($consumer,$key); killme();
|
// 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($consumer->key),
|
||||||
dbesc($nonce),
|
dbesc($nonce),
|
||||||
intval($timestamp)
|
intval($timestamp)
|
||||||
|
@ -132,6 +134,7 @@ class FKOAuthDataStore extends OAuthDataStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
class FKOAuth1 extends OAuthServer {
|
class FKOAuth1 extends OAuthServer {
|
||||||
|
|
||||||
function __construct() {
|
function __construct() {
|
||||||
parent::__construct(new FKOAuthDataStore());
|
parent::__construct(new FKOAuthDataStore());
|
||||||
$this->add_signature_method(new OAuthSignatureMethod_PLAINTEXT());
|
$this->add_signature_method(new OAuthSignatureMethod_PLAINTEXT());
|
||||||
|
|
|
@ -65,6 +65,10 @@ function get_perms() {
|
||||||
*/
|
*/
|
||||||
function get_all_perms($uid, $observer_xchan, $internal_use = true) {
|
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();
|
$global_perms = get_perms();
|
||||||
|
|
||||||
// Save lots of individual lookups
|
// 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) {
|
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(
|
$arr = array(
|
||||||
'channel_id' => $uid,
|
'channel_id' => $uid,
|
||||||
'observer_hash' => $observer_xchan,
|
'observer_hash' => $observer_xchan,
|
||||||
|
@ -388,6 +396,82 @@ function perm_is_allowed($uid, $observer_xchan, $permission) {
|
||||||
return false;
|
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
|
// Check a simple array of observers against a permissions
|
||||||
// return a simple array of those with permission
|
// return a simple array of those with permission
|
||||||
|
|
|
@ -232,7 +232,7 @@ function admin_page_summary(&$a) {
|
||||||
$alertmsg = '';
|
$alertmsg = '';
|
||||||
// annoy admin about upcoming unsupported PHP version
|
// annoy admin about upcoming unsupported PHP version
|
||||||
if (version_compare(PHP_VERSION, '5.4', '<')) {
|
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.'
|
. '<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>.';
|
. ' 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)) {
|
if ((! $auth->observer) && (! $isapublic_file) && (! $davguest)) {
|
||||||
try {
|
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) {
|
catch (Exception $e) {
|
||||||
logger('mod_cloud: auth exception' . $e->getMessage());
|
logger('mod_cloud: auth exception' . $e->getMessage());
|
||||||
|
|
|
@ -118,7 +118,7 @@ function dav_init(&$a) {
|
||||||
|
|
||||||
if ((! $auth->observer) && (! $isapublic_file) && (! $davguest)) {
|
if ((! $auth->observer) && (! $isapublic_file) && (! $davguest)) {
|
||||||
try {
|
try {
|
||||||
$auth->Authenticate($server, t('Hubzilla channel'));
|
$auth->Authenticate($server, t('$Projectname channel'));
|
||||||
}
|
}
|
||||||
catch (Exception $e) {
|
catch (Exception $e) {
|
||||||
logger('mod_cloud: auth exception' . $e->getMessage());
|
logger('mod_cloud: auth exception' . $e->getMessage());
|
||||||
|
|
|
@ -50,7 +50,7 @@ function home_content(&$a, $update = 0, $load = false) {
|
||||||
if(get_config('system','projecthome')) {
|
if(get_config('system','projecthome')) {
|
||||||
$o .= file_get_contents('assets/home.html');
|
$o .= file_get_contents('assets/home.html');
|
||||||
$a->page['template'] = 'full';
|
$a->page['template'] = 'full';
|
||||||
$a->page['title'] = t('Hubzilla - "The Network"');
|
$a->page['title'] = t('$Projectname');
|
||||||
return $o;
|
return $o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -129,12 +129,12 @@ function invite_content(&$a) {
|
||||||
'$invite' => t('Send invitations'),
|
'$invite' => t('Send invitations'),
|
||||||
'$addr_text' => t('Enter email addresses, one per line:'),
|
'$addr_text' => t('Enter email addresses, one per line:'),
|
||||||
'$msg_text' => t('Your message:'),
|
'$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
|
. $linktxt
|
||||||
. (($invonly) ? "\r\n" . "\r\n" . t('You will need to supply this invitation code: ') . $invite_code . "\r\n" . "\r\n" : '')
|
. (($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" . 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" . $ob['xchan_addr'] . ' (' . t('or visit ') . z_root() . '/channel/' . $channel['channel_address'] . ')'
|
||||||
. "\r\n" . "\r\n"
|
. "\r\n" . "\r\n"
|
||||||
. t('3. Click [Connect]')
|
. t('3. Click [Connect]')
|
||||||
|
|
|
@ -18,7 +18,7 @@ function like_content(&$a) {
|
||||||
if(! $observer) {
|
if(! $observer) {
|
||||||
$_SESSION['return_url'] = $a->query_string;
|
$_SESSION['return_url'] = $a->query_string;
|
||||||
$o .= t('This action is restricted to members.') . EOL;
|
$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;
|
return $o;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,7 +159,7 @@ function mitem_content(&$a) {
|
||||||
'$permdesc' => t("\x28click to open/close\x29"),
|
'$permdesc' => t("\x28click to open/close\x29"),
|
||||||
'$aclselect' => populate_acl($perm_defaults,false),
|
'$aclselect' => populate_acl($perm_defaults,false),
|
||||||
'$mitem_desc' => array('mitem_desc', t('Link Name'), '', 'Visible name of the link','*'),
|
'$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, ''),
|
'$usezid' => array('usezid', t('Use magic-auth if available'), true, ''),
|
||||||
'$newwin' => array('newwin', t('Open link in new window'), false,''),
|
'$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')),
|
'$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),
|
'$aclselect' => populate_acl($mitem,false),
|
||||||
'$mitem_id' => intval(argv(2)),
|
'$mitem_id' => intval(argv(2)),
|
||||||
'$mitem_desc' => array('mitem_desc', t('Link text'), $mitem['mitem_desc'], '','*'),
|
'$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"'),
|
'$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 Hubzilla magic-auth if available'), (($mitem['mitem_flags'] & MENU_ITEM_ZID) ? 1 : 0), ''),
|
'$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),''),
|
'$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')),
|
'$mitem_order' => array('mitem_order', t('Order in list'),$mitem['mitem_order'],t('Higher numbers will sink to bottom of listing')),
|
||||||
'$submit' => t('Submit'),
|
'$submit' => t('Submit'),
|
||||||
|
|
|
@ -42,7 +42,7 @@ function p_init(&$a) {
|
||||||
'$handle' => xmlify($myaddr),
|
'$handle' => xmlify($myaddr),
|
||||||
'$public' => 'true',
|
'$public' => 'true',
|
||||||
'$created' => $created,
|
'$created' => $created,
|
||||||
'$provider' => (($item['app']) ? $item['app'] : 'hubzilla')
|
'$provider' => (($item['app']) ? $item['app'] : t('$projectname'))
|
||||||
));
|
));
|
||||||
|
|
||||||
header('Content-type: text/xml');
|
header('Content-type: text/xml');
|
||||||
|
|
|
@ -16,7 +16,7 @@ function pubsites_content(&$a) {
|
||||||
$o .= '<h1>' . t('Public Sites') . '</h1>';
|
$o .= '<h1>' . t('Public Sites') . '</h1>';
|
||||||
|
|
||||||
$o .= '<div class="descriptive-text">' .
|
$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);
|
$ret = z_fetch_url($url);
|
||||||
if($ret['success']) {
|
if($ret['success']) {
|
||||||
|
|
|
@ -163,9 +163,7 @@ function setup_content(&$a) {
|
||||||
global $install_wizard_pass, $db;
|
global $install_wizard_pass, $db;
|
||||||
$o = '';
|
$o = '';
|
||||||
$wizard_status = "";
|
$wizard_status = "";
|
||||||
$install_title = t('Hubzilla Server - Setup');
|
$install_title = t('$Projectname Server - Setup');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(x($a->data,'db_conn_failed')) {
|
if(x($a->data,'db_conn_failed')) {
|
||||||
$install_wizard_pass = 2;
|
$install_wizard_pass = 2;
|
||||||
|
@ -287,7 +285,7 @@ function setup_content(&$a) {
|
||||||
$o .= replace_macros($tpl, array(
|
$o .= replace_macros($tpl, array(
|
||||||
'$title' => $install_title,
|
'$title' => $install_title,
|
||||||
'$pass' => t('Database connection'),
|
'$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_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.'),
|
'$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');
|
$donate .= file_get_contents('doc/site_donate.html');
|
||||||
|
|
||||||
$o = replace_macros(get_markup_template('siteinfo.tpl'), array(
|
$o = replace_macros(get_markup_template('siteinfo.tpl'), array(
|
||||||
'$title' => t('Red'),
|
'$title' => t('$Projectname'),
|
||||||
'$description' => t('This is a hub of hubzilla - a global cooperative network of decentralized privacy enhanced websites.'),
|
'$description' => t('This is a hub of $Projectname - a global cooperative network of decentralized privacy enhanced websites.'),
|
||||||
'$version' => $version,
|
'$version' => $version,
|
||||||
'$tag_txt' => t('Tag: '),
|
'$tag_txt' => t('Tag: '),
|
||||||
'$tag' => $tag,
|
'$tag' => $tag,
|
||||||
|
@ -161,11 +161,11 @@ function siteinfo_content(&$a) {
|
||||||
'$lastpoll' => get_poller_runtime(),
|
'$lastpoll' => get_poller_runtime(),
|
||||||
'$commit' => $commit,
|
'$commit' => $commit,
|
||||||
'$web_location' => t('Running at web location') . ' ' . z_root(),
|
'$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_text' => t('Bug reports and issues: please visit'),
|
||||||
'$bug_link_url' => 'https://github.com/redmatrix/hubzilla/issues',
|
'$bug_link_url' => 'https://github.com/redmatrix/hubzilla/issues',
|
||||||
'$bug_link_text' => 'hubzilla issues',
|
'$bug_link_text' => '$projectname issues',
|
||||||
'$contact' => t('Suggestions, praise, etc. - please email "hubzilla" at librelist - dot com'),
|
'$contact' => t('Suggestions, praise, etc. - please email "redmatrix" at librelist - dot com'),
|
||||||
'$donate' => $donate,
|
'$donate' => $donate,
|
||||||
'$adminlabel' => t('Site Administrators'),
|
'$adminlabel' => t('Site Administrators'),
|
||||||
'$admininfo' => $admininfo,
|
'$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")
|
$(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" )
|
[[ "$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
|
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.
|
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:
|
Segueix aquest enllaç per verificar la teva identitat:
|
||||||
|
|
||||||
$reset_link
|
{{$reset_link}}
|
||||||
|
|
||||||
A continuació rebràs un missatge amb la nova contrasenya.
|
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:
|
Les dades d'accés són els següents:
|
||||||
|
|
||||||
|
|
||||||
Lloc: $siteurl
|
Lloc: {{$siteurl}}
|
||||||
Nom: $email
|
Nom: {{$email}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Salutacions,
|
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ó
|
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).
|
(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:
|
Les teves dades d'accés son les següents:
|
||||||
|
|
||||||
Lloc: $siteurl
|
Lloc: {{$siteurl}}
|
||||||
Nom: $email
|
Nom: {{$email}}
|
||||||
Contrasenya: $new_password
|
Contrasenya: {{$new_password}}
|
||||||
|
|
||||||
Després d'accedir pots canviar la contrasenya des de la pàgina de configuració del teu perfil.
|
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:
|
Les dades d'accés són les següents:
|
||||||
|
|
||||||
|
|
||||||
Lloc: $siteurl
|
Lloc: {{$siteurl}}
|
||||||
Nom: $email
|
Nom: {{$email}}
|
||||||
Contrasenya: $password
|
Contrasenya: {{$password}}
|
||||||
|
|
||||||
|
|
||||||
Després d'accedir pots canviar la teva contrasenya a la pàgina de "Configuració".
|
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.
|
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
|
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:
|
Les dades d'accés són els següents:
|
||||||
|
|
||||||
Nom Complet: $username
|
Nom Complet: {{$username}}
|
||||||
Lloc: $siteurl
|
Lloc: {{$siteurl}}
|
||||||
Nom: $email
|
Nom: {{$email}}
|
||||||
|
|
||||||
|
|
||||||
Per aprovar aquesta sol·licitud, visita el següent enllaç:
|
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:
|
Per denegar la sol·licitud i eliminar el compte, per favor visita:
|
||||||
|
|
||||||
$siteurl/regmod/deny/$hash
|
{{$siteurl}}/regmod/deny/{{$hash}}
|
||||||
|
|
||||||
|
|
||||||
Gràcies.
|
Gràcies.
|
||||||
|
|
Loading…
Reference in a new issue