diff --git a/bin/daemon.php b/bin/daemon.php
index f0f5826d92..f628031c35 100755
--- a/bin/daemon.php
+++ b/bin/daemon.php
@@ -9,6 +9,7 @@
use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
@@ -97,7 +98,7 @@ if ($mode == "stop") {
unlink($pidfile);
- logger("Worker daemon process $pid was killed.", LOGGER_DEBUG);
+ Logger::log("Worker daemon process $pid was killed.", Logger::DEBUG);
Config::set('system', 'worker_daemon_mode', false);
die("Worker daemon process $pid was killed.\n");
@@ -107,7 +108,7 @@ if (!empty($pid) && posix_kill($pid, 0)) {
die("Daemon process $pid is already running.\n");
}
-logger('Starting worker daemon.', LOGGER_DEBUG);
+Logger::log('Starting worker daemon.', Logger::DEBUG);
if (!$foreground) {
echo "Starting worker daemon.\n";
@@ -155,7 +156,7 @@ $last_cron = 0;
// Now running as a daemon.
while (true) {
if (!$do_cron && ($last_cron + $wait_interval) < time()) {
- logger('Forcing cron worker call.', LOGGER_DEBUG);
+ Logger::log('Forcing cron worker call.', Logger::DEBUG);
$do_cron = true;
}
@@ -169,7 +170,7 @@ while (true) {
$last_cron = time();
}
- logger("Sleeping", LOGGER_DEBUG);
+ Logger::log("Sleeping", Logger::DEBUG);
$start = time();
do {
$seconds = (time() - $start);
@@ -186,10 +187,10 @@ while (true) {
if ($timeout) {
$do_cron = true;
- logger("Woke up after $wait_interval seconds.", LOGGER_DEBUG);
+ Logger::log("Woke up after $wait_interval seconds.", Logger::DEBUG);
} else {
$do_cron = false;
- logger("Worker jobs are calling to be forked.", LOGGER_DEBUG);
+ Logger::log("Worker jobs are calling to be forked.", Logger::DEBUG);
}
}
diff --git a/bin/worker.php b/bin/worker.php
index d5cd1f6b4b..9ae2f68b3e 100755
--- a/bin/worker.php
+++ b/bin/worker.php
@@ -7,6 +7,7 @@
use Friendica\App;
use Friendica\Core\Config;
use Friendica\Core\Worker;
+use Friendica\Core\Update;
// Get options
$shortopts = 'sn';
@@ -30,7 +31,7 @@ require_once "boot.php";
$a = new App(dirname(__DIR__));
// Check the database structure and possibly fixes it
-check_db(true);
+Update::check(true);
// Quit when in maintenance
if (!$a->getMode()->has(App\Mode::MAINTENANCEDISABLED)) {
diff --git a/boot.php b/boot.php
index 6b66625c6c..a94b380387 100644
--- a/boot.php
+++ b/boot.php
@@ -28,9 +28,9 @@ use Friendica\Core\L10n;
use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
use Friendica\Core\System;
+use Friendica\Core\Update;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
-use Friendica\Database\DBStructure;
use Friendica\Model\Contact;
use Friendica\Model\Conversation;
use Friendica\Util\DateTimeFormat;
@@ -43,13 +43,6 @@ define('FRIENDICA_VERSION', '2018.12-dev');
define('DFRN_PROTOCOL_VERSION', '2.23');
define('NEW_UPDATE_ROUTINE_VERSION', 1170);
-/**
- * @brief Constants for the database update check
- */
-const DB_UPDATE_NOT_CHECKED = 0; // Database check wasn't executed before
-const DB_UPDATE_SUCCESSFUL = 1; // Database check was successful
-const DB_UPDATE_FAILED = 2; // Database check failed
-
/**
* @brief Constant with a HTML line break.
*
@@ -106,20 +99,6 @@ define('SSL_POLICY_FULL', 1);
define('SSL_POLICY_SELFSIGN', 2);
/* @}*/
-/**
- * @name Logger
- *
- * log levels
- * @{
- */
-define('LOGGER_WARNING', 0);
-define('LOGGER_INFO', 1);
-define('LOGGER_TRACE', 2);
-define('LOGGER_DEBUG', 3);
-define('LOGGER_DATA', 4);
-define('LOGGER_ALL', 5);
-/* @}*/
-
/**
* @name Register
*
@@ -133,18 +112,6 @@ define('REGISTER_OPEN', 2);
* @}
*/
-/**
- * @name Update
- *
- * DB update return values
- * @{
- */
-define('UPDATE_SUCCESS', 0);
-define('UPDATE_FAILED', 1);
-/**
- * @}
- */
-
/**
* @name CP
*
@@ -446,143 +413,6 @@ function defaults() {
return $return;
}
-/**
- * @brief Function to check if request was an AJAX (xmlhttprequest) request.
- *
- * @param boolean $via_worker boolean Is the check run via the worker?
- */
-function check_db($via_worker)
-{
- $build = Config::get('system', 'build');
-
- if (empty($build)) {
- Config::set('system', 'build', DB_UPDATE_VERSION - 1);
- $build = DB_UPDATE_VERSION - 1;
- }
-
- // We don't support upgrading from very old versions anymore
- if ($build < NEW_UPDATE_ROUTINE_VERSION) {
- die('You try to update from a version prior to database version 1170. The direct upgrade path is not supported. Please update to version 3.5.4 before updating to this version.');
- }
-
- if ($build < DB_UPDATE_VERSION) {
- // When we cannot execute the database update via the worker, we will do it directly
- if (!Worker::add(PRIORITY_CRITICAL, 'DBUpdate') && $via_worker) {
- update_db();
- }
- }
-}
-
-/**
- * @brief Automatic database updates
- * @param object $a App
- */
-function update_db()
-{
- $build = Config::get('system', 'build');
-
- if (empty($build) || ($build > DB_UPDATE_VERSION)) {
- $build = DB_UPDATE_VERSION - 1;
- Config::set('system', 'build', $build);
- }
-
- if ($build != DB_UPDATE_VERSION) {
- require_once 'update.php';
-
- $stored = intval($build);
- $current = intval(DB_UPDATE_VERSION);
- if ($stored < $current) {
- Config::load('database');
-
- // Compare the current structure with the defined structure
- $t = Config::get('database', 'dbupdate_' . DB_UPDATE_VERSION);
- if (!is_null($t)) {
- return;
- }
-
- // run the pre_update_nnnn functions in update.php
- for ($x = $stored + 1; $x <= $current; $x++) {
- $r = run_update_function($x, 'pre_update');
- if (!$r) {
- break;
- }
- }
-
- Config::set('database', 'dbupdate_' . DB_UPDATE_VERSION, time());
-
- // update the structure in one call
- $retval = DBStructure::update(false, true);
- if ($retval) {
- DBStructure::updateFail(
- DB_UPDATE_VERSION,
- $retval
- );
- return;
- } else {
- Config::set('database', 'dbupdate_' . DB_UPDATE_VERSION, 'success');
- }
-
- // run the update_nnnn functions in update.php
- for ($x = $stored + 1; $x <= $current; $x++) {
- $r = run_update_function($x, 'update');
- if (!$r) {
- break;
- }
- }
- }
- }
-
- return;
-}
-
-function run_update_function($x, $prefix)
-{
- $funcname = $prefix . '_' . $x;
-
- if (function_exists($funcname)) {
- // There could be a lot of processes running or about to run.
- // We want exactly one process to run the update command.
- // So store the fact that we're taking responsibility
- // after first checking to see if somebody else already has.
- // If the update fails or times-out completely you may need to
- // delete the config entry to try again.
-
- $t = Config::get('database', $funcname);
- if (!is_null($t)) {
- return false;
- }
- Config::set('database', $funcname, time());
-
- // call the specific update
- $retval = $funcname();
-
- if ($retval) {
- //send the administrator an e-mail
- DBStructure::updateFail(
- $x,
- L10n::t('Update %s failed. See error logs.', $x)
- );
- return false;
- } else {
- Config::set('database', $funcname, 'success');
-
- if ($prefix == 'update') {
- Config::set('system', 'build', $x);
- }
-
- return true;
- }
- } else {
- Config::set('database', $funcname, 'success');
-
- if ($prefix == 'update') {
- Config::set('system', 'build', $x);
- }
-
- return true;
- }
-}
-
/**
* @brief Used to end the current process, after saving session state.
* @deprecated
diff --git a/doc/Addons.md b/doc/Addons.md
index f7dfcc870c..50febf7214 100644
--- a/doc/Addons.md
+++ b/doc/Addons.md
@@ -160,11 +160,11 @@ In your code, like in the function addon_name_content(), load the template file
```php
# load template file. first argument is the template name,
# second is the addon path relative to friendica top folder
-$tpl = get_markup_template('mytemplate.tpl', 'addon/addon_name/');
+$tpl = Renderer::getMarkupTemplate('mytemplate.tpl', 'addon/addon_name/');
# apply template. first argument is the loaded template,
# second an array of 'name' => 'values' to pass to template
-$output = replace_macros($tpl, array(
+$output = Renderer::replaceMacros($tpl, array(
'title' => 'My beautiful addon',
));
```
diff --git a/doc/smarty3-templates.md b/doc/smarty3-templates.md
index d44f263255..599e3597e7 100644
--- a/doc/smarty3-templates.md
+++ b/doc/smarty3-templates.md
@@ -20,10 +20,10 @@ Templates that are only used by addons shall be placed in the
directory.
-To render a template use the function *get_markup_template* to load the template and *replace_macros* to replace the macros/variables in the just loaded template file.
+To render a template use the function *getMarkupTemplate* to load the template and *replaceMacros* to replace the macros/variables in the just loaded template file.
- $tpl = get_markup_template('install_settings.tpl');
- $o .= replace_macros($tpl, array( ... ));
+ $tpl = Renderer::getMarkupTemplate('install_settings.tpl');
+ $o .= Renderer::replaceMacros($tpl, array( ... ));
the array consists of an association of an identifier and the value for that identifier, i.e.
diff --git a/include/api.php b/include/api.php
index 86f2e3b2a4..246a716fac 100644
--- a/include/api.php
+++ b/include/api.php
@@ -15,6 +15,7 @@ use Friendica\Core\Addon;
use Friendica\Core\Authentication;
use Friendica\Core\Config;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\NotificationsManager;
use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
@@ -96,9 +97,9 @@ function api_source()
return "Twidere";
}
- logger("Unrecognized user-agent ".$_SERVER['HTTP_USER_AGENT'], LOGGER_DEBUG);
+ Logger::log("Unrecognized user-agent ".$_SERVER['HTTP_USER_AGENT'], Logger::DEBUG);
} else {
- logger("Empty user-agent", LOGGER_DEBUG);
+ Logger::log("Empty user-agent", Logger::DEBUG);
}
return "api";
@@ -180,7 +181,7 @@ function api_login(App $a)
var_dump($consumer, $token);
die();
} catch (Exception $e) {
- logger($e);
+ Logger::log($e);
}
// workaround for HTTP-auth in CGI mode
@@ -194,7 +195,7 @@ function api_login(App $a)
}
if (!x($_SERVER, 'PHP_AUTH_USER')) {
- logger('API_login: ' . print_r($_SERVER, true), LOGGER_DEBUG);
+ Logger::log('API_login: ' . print_r($_SERVER, true), Logger::DEBUG);
header('WWW-Authenticate: Basic realm="Friendica"');
throw new UnauthorizedException("This API requires login");
}
@@ -235,7 +236,7 @@ function api_login(App $a)
}
if (!DBA::isResult($record)) {
- logger('API_login failure: ' . print_r($_SERVER, true), LOGGER_DEBUG);
+ Logger::log('API_login failure: ' . print_r($_SERVER, true), Logger::DEBUG);
header('WWW-Authenticate: Basic realm="Friendica"');
//header('HTTP/1.0 401 Unauthorized');
//die('This api requires login');
@@ -308,19 +309,19 @@ function api_call(App $a)
api_login($a);
}
- logger('API call for ' . $a->user['username'] . ': ' . $a->query_string);
- logger('API parameters: ' . print_r($_REQUEST, true));
+ Logger::log('API call for ' . $a->user['username'] . ': ' . $a->query_string);
+ Logger::log('API parameters: ' . print_r($_REQUEST, true));
$stamp = microtime(true);
$return = call_user_func($info['func'], $type);
$duration = (float) (microtime(true) - $stamp);
- logger("API call duration: " . round($duration, 2) . "\t" . $a->query_string, LOGGER_DEBUG);
+ Logger::log("API call duration: " . round($duration, 2) . "\t" . $a->query_string, Logger::DEBUG);
if (Config::get("system", "profiler")) {
$duration = microtime(true)-$a->performance["start"];
/// @TODO round() really everywhere?
- logger(
+ Logger::log(
parse_url($a->query_string, PHP_URL_PATH) . ": " . sprintf(
"Database: %s/%s, Cache %s/%s, Network: %s, I/O: %s, Other: %s, Total: %s",
round($a->performance["database"] - $a->performance["database_write"], 3),
@@ -334,7 +335,7 @@ function api_call(App $a)
+ $a->performance["network"] + $a->performance["file"]), 2),
round($duration, 2)
),
- LOGGER_DEBUG
+ Logger::DEBUG
);
if (Config::get("rendertime", "callstack")) {
@@ -375,7 +376,7 @@ function api_call(App $a)
$o .= $func . ": " . $time . "\n";
}
}
- logger($o, LOGGER_DEBUG);
+ Logger::log($o, Logger::DEBUG);
}
}
@@ -412,7 +413,7 @@ function api_call(App $a)
}
}
- logger('API call not implemented: ' . $a->query_string);
+ Logger::log('API call not implemented: ' . $a->query_string);
throw new NotImplementedException();
} catch (HTTPException $e) {
header("HTTP/1.1 {$e->httpcode} {$e->httpdesc}");
@@ -521,7 +522,7 @@ function api_get_user(App $a, $contact_id = null)
$extra_query = "";
$url = "";
- logger("api_get_user: Fetching user data for user ".$contact_id, LOGGER_DEBUG);
+ Logger::log("api_get_user: Fetching user data for user ".$contact_id, Logger::DEBUG);
// Searching for contact URL
if (!is_null($contact_id) && (intval($contact_id) == 0)) {
@@ -605,7 +606,7 @@ function api_get_user(App $a, $contact_id = null)
}
}
- logger("api_get_user: user ".$user, LOGGER_DEBUG);
+ Logger::log("api_get_user: user ".$user, Logger::DEBUG);
if (!$user) {
if (api_user() === false) {
@@ -617,7 +618,7 @@ function api_get_user(App $a, $contact_id = null)
}
}
- logger('api_user: ' . $extra_query . ', user: ' . $user);
+ Logger::log('api_user: ' . $extra_query . ', user: ' . $user);
// user info
$uinfo = q(
@@ -1033,7 +1034,7 @@ function api_statuses_mediap($type)
$a = get_app();
if (api_user() === false) {
- logger('api_statuses_update: no user');
+ Logger::log('api_statuses_update: no user');
throw new ForbiddenException();
}
$user_info = api_get_user($a);
@@ -1081,7 +1082,7 @@ function api_statuses_update($type)
$a = get_app();
if (api_user() === false) {
- logger('api_statuses_update: no user');
+ Logger::log('api_statuses_update: no user');
throw new ForbiddenException();
}
@@ -1135,7 +1136,7 @@ function api_statuses_update($type)
$posts_day = DBA::count('thread', $condition);
if ($posts_day > $throttle_day) {
- logger('Daily posting limit reached for user '.api_user(), LOGGER_DEBUG);
+ Logger::log('Daily posting limit reached for user '.api_user(), Logger::DEBUG);
// die(api_error($type, L10n::t("Daily posting limit of %d posts reached. The post was rejected.", $throttle_day));
throw new TooManyRequestsException(L10n::tt("Daily posting limit of %d post reached. The post was rejected.", "Daily posting limit of %d posts reached. The post was rejected.", $throttle_day));
}
@@ -1149,7 +1150,7 @@ function api_statuses_update($type)
$posts_week = DBA::count('thread', $condition);
if ($posts_week > $throttle_week) {
- logger('Weekly posting limit reached for user '.api_user(), LOGGER_DEBUG);
+ Logger::log('Weekly posting limit reached for user '.api_user(), Logger::DEBUG);
// die(api_error($type, L10n::t("Weekly posting limit of %d posts reached. The post was rejected.", $throttle_week)));
throw new TooManyRequestsException(L10n::tt("Weekly posting limit of %d post reached. The post was rejected.", "Weekly posting limit of %d posts reached. The post was rejected.", $throttle_week));
}
@@ -1163,7 +1164,7 @@ function api_statuses_update($type)
$posts_month = DBA::count('thread', $condition);
if ($posts_month > $throttle_month) {
- logger('Monthly posting limit reached for user '.api_user(), LOGGER_DEBUG);
+ Logger::log('Monthly posting limit reached for user '.api_user(), Logger::DEBUG);
// die(api_error($type, L10n::t("Monthly posting limit of %d posts reached. The post was rejected.", $throttle_month));
throw new TooManyRequestsException(L10n::t("Monthly posting limit of %d post reached. The post was rejected.", "Monthly posting limit of %d posts reached. The post was rejected.", $throttle_month));
}
@@ -1223,7 +1224,7 @@ function api_media_upload()
$a = get_app();
if (api_user() === false) {
- logger('no user');
+ Logger::log('no user');
throw new ForbiddenException();
}
@@ -1248,7 +1249,7 @@ function api_media_upload()
"h" => $media["height"],
"image_type" => $media["type"]];
- logger("Media uploaded: " . print_r($returndata, true), LOGGER_DEBUG);
+ Logger::log("Media uploaded: " . print_r($returndata, true), Logger::DEBUG);
return ["media" => $returndata];
}
@@ -1268,7 +1269,7 @@ function api_status_show($type, $item_id = 0)
$user_info = api_get_user($a);
- logger('api_status_show: user_info: '.print_r($user_info, true), LOGGER_DEBUG);
+ Logger::log('api_status_show: user_info: '.print_r($user_info, true), Logger::DEBUG);
if ($type == "raw") {
$privacy_sql = "AND NOT `private`";
@@ -1344,7 +1345,7 @@ function api_status_show($type, $item_id = 0)
unset($status_info["user"]["uid"]);
unset($status_info["user"]["self"]);
- logger('status_info: '.print_r($status_info, true), LOGGER_DEBUG);
+ Logger::log('status_info: '.print_r($status_info, true), Logger::DEBUG);
if ($type == "raw") {
return $status_info;
@@ -1824,7 +1825,7 @@ function api_statuses_show($type)
$id = intval(defaults($a->argv, 4, 0));
}
- logger('API: api_statuses_show: ' . $id);
+ Logger::log('API: api_statuses_show: ' . $id);
$conversation = !empty($_REQUEST['conversation']);
@@ -1906,7 +1907,7 @@ function api_conversation_show($type)
$id = intval(defaults($a->argv, 4, 0));
}
- logger('API: api_conversation_show: '.$id);
+ Logger::log('API: api_conversation_show: '.$id);
// try to fetch the item for the local user - or the public item, if there is no local one
$item = Item::selectFirst(['parent-uri'], ['id' => $id]);
@@ -1977,7 +1978,7 @@ function api_statuses_repeat($type)
$id = intval(defaults($a->argv, 4, 0));
}
- logger('API: api_statuses_repeat: '.$id);
+ Logger::log('API: api_statuses_repeat: '.$id);
$fields = ['body', 'author-name', 'author-link', 'author-avatar', 'guid', 'created', 'plink'];
$item = Item::selectFirst($fields, ['id' => $id, 'private' => false]);
@@ -2042,7 +2043,7 @@ function api_statuses_destroy($type)
$id = intval(defaults($a->argv, 4, 0));
}
- logger('API: api_statuses_destroy: '.$id);
+ Logger::log('API: api_statuses_destroy: '.$id);
$ret = api_statuses_show($type);
@@ -2137,11 +2138,11 @@ function api_statuses_user_timeline($type)
throw new ForbiddenException();
}
- logger(
+ Logger::log(
"api_statuses_user_timeline: api_user: ". api_user() .
"\nuser_info: ".print_r($user_info, true) .
"\n_REQUEST: ".print_r($_REQUEST, true),
- LOGGER_DEBUG
+ Logger::DEBUG
);
$since_id = x($_REQUEST, 'since_id') ? $_REQUEST['since_id'] : 0;
@@ -2294,7 +2295,7 @@ function api_favorites($type)
// in friendica starred item are private
// return favorites only for self
- logger('api_favorites: self:' . $user_info['self']);
+ Logger::log('api_favorites: self:' . $user_info['self']);
if ($user_info['self'] == 0) {
$ret = [];
@@ -3649,7 +3650,7 @@ function api_friendships_destroy($type)
$contact_id = defaults($_REQUEST, 'user_id');
if (empty($contact_id)) {
- logger("No user_id specified", LOGGER_DEBUG);
+ Logger::log("No user_id specified", Logger::DEBUG);
throw new BadRequestException("no user_id specified");
}
@@ -3657,7 +3658,7 @@ function api_friendships_destroy($type)
$contact = DBA::selectFirst('contact', ['url'], ['id' => $contact_id, 'uid' => 0, 'self' => false]);
if(!DBA::isResult($contact)) {
- logger("No contact found for ID" . $contact_id, LOGGER_DEBUG);
+ Logger::log("No contact found for ID" . $contact_id, Logger::DEBUG);
throw new NotFoundException("no contact found to given ID");
}
@@ -3669,12 +3670,12 @@ function api_friendships_destroy($type)
$contact = DBA::selectFirst('contact', [], $condition);
if (!DBA::isResult($contact)) {
- logger("Not following Contact", LOGGER_DEBUG);
+ Logger::log("Not following Contact", Logger::DEBUG);
throw new NotFoundException("Not following Contact");
}
if (!in_array($contact['network'], Protocol::NATIVE_SUPPORT)) {
- logger("Not supported", LOGGER_DEBUG);
+ Logger::log("Not supported", Logger::DEBUG);
throw new ExpectationFailedException("Not supported");
}
@@ -3685,7 +3686,7 @@ function api_friendships_destroy($type)
Contact::terminateFriendship($owner, $contact, $dissolve);
}
else {
- logger("No owner found", LOGGER_DEBUG);
+ Logger::log("No owner found", Logger::DEBUG);
throw new NotFoundException("Error Processing Request");
}
@@ -4485,10 +4486,10 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
if ($imagedata) {
$filetype = $imagedata['mime'];
}
- logger(
+ Logger::log(
"File upload src: " . $src . " - filename: " . $filename .
" - size: " . $filesize . " - type: " . $filetype,
- LOGGER_DEBUG
+ Logger::DEBUG
);
// check if there was a php upload error
@@ -4520,7 +4521,7 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
}
if ($max_length > 0) {
$Image->scaleDown($max_length);
- logger("File upload: Scaling picture to new size " . $max_length, LOGGER_DEBUG);
+ Logger::log("File upload: Scaling picture to new size " . $max_length, Logger::DEBUG);
}
$width = $Image->getWidth();
$height = $Image->getHeight();
@@ -4530,17 +4531,17 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
if ($mediatype == "photo") {
// upload normal image (scales 0, 1, 2)
- logger("photo upload: starting new photo upload", LOGGER_DEBUG);
+ Logger::log("photo upload: starting new photo upload", Logger::DEBUG);
$r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 0, 0, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
if (!$r) {
- logger("photo upload: image upload with scale 0 (original size) failed");
+ Logger::log("photo upload: image upload with scale 0 (original size) failed");
}
if ($width > 640 || $height > 640) {
$Image->scaleDown(640);
$r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 1, 0, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
if (!$r) {
- logger("photo upload: image upload with scale 1 (640x640) failed");
+ Logger::log("photo upload: image upload with scale 1 (640x640) failed");
}
}
@@ -4548,19 +4549,19 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
$Image->scaleDown(320);
$r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 2, 0, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
if (!$r) {
- logger("photo upload: image upload with scale 2 (320x320) failed");
+ Logger::log("photo upload: image upload with scale 2 (320x320) failed");
}
}
- logger("photo upload: new photo upload ended", LOGGER_DEBUG);
+ Logger::log("photo upload: new photo upload ended", Logger::DEBUG);
} elseif ($mediatype == "profileimage") {
// upload profile image (scales 4, 5, 6)
- logger("photo upload: starting new profile image upload", LOGGER_DEBUG);
+ Logger::log("photo upload: starting new profile image upload", Logger::DEBUG);
if ($width > 300 || $height > 300) {
$Image->scaleDown(300);
$r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 4, $profile, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
if (!$r) {
- logger("photo upload: profile image upload with scale 4 (300x300) failed");
+ Logger::log("photo upload: profile image upload with scale 4 (300x300) failed");
}
}
@@ -4568,7 +4569,7 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
$Image->scaleDown(80);
$r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 5, $profile, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
if (!$r) {
- logger("photo upload: profile image upload with scale 5 (80x80) failed");
+ Logger::log("photo upload: profile image upload with scale 5 (80x80) failed");
}
}
@@ -4576,11 +4577,11 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
$Image->scaleDown(48);
$r = Photo::store($Image, local_user(), $visitor, $hash, $filename, $album, 6, $profile, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $desc);
if (!$r) {
- logger("photo upload: profile image upload with scale 6 (48x48) failed");
+ Logger::log("photo upload: profile image upload with scale 6 (48x48) failed");
}
}
$Image->__destruct();
- logger("photo upload: new profile image upload ended", LOGGER_DEBUG);
+ Logger::log("photo upload: new profile image upload ended", Logger::DEBUG);
}
if (isset($r) && $r) {
@@ -4807,7 +4808,7 @@ function api_friendica_remoteauth()
'sec' => $sec, 'expire' => time() + 45];
DBA::insert('profile_check', $fields);
- logger($contact['name'] . ' ' . $sec, LOGGER_DEBUG);
+ Logger::log($contact['name'] . ' ' . $sec, Logger::DEBUG);
$dest = ($url ? '&destination_url=' . $url : '');
System::externalRedirect(
@@ -5055,7 +5056,7 @@ function api_in_reply_to($item)
// https://github.com/friendica/friendica/issues/1010
// This is a bugfix for that.
if (intval($in_reply_to['status_id']) == intval($item['id'])) {
- logger('this message should never appear: id: '.$item['id'].' similar to reply-to: '.$in_reply_to['status_id'], LOGGER_DEBUG);
+ Logger::log('this message should never appear: id: '.$item['id'].' similar to reply-to: '.$in_reply_to['status_id'], Logger::DEBUG);
$in_reply_to['status_id'] = null;
$in_reply_to['user_id'] = null;
$in_reply_to['status_id_str'] = null;
diff --git a/include/conversation.php b/include/conversation.php
index 27cbd4289b..c1d428f244 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -11,8 +11,10 @@ use Friendica\Content\Text\BBCode;
use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
+use Friendica\Core\Renderer;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\Contact;
@@ -552,7 +554,7 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ
$threads = [];
$threadsid = -1;
- $page_template = get_markup_template("conversation.tpl");
+ $page_template = Renderer::getMarkupTemplate("conversation.tpl");
if (!empty($items)) {
if (in_array($mode, ['community', 'contacts'])) {
@@ -711,7 +713,7 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ
}
} else {
// Normal View
- $page_template = get_markup_template("threaded_conversation.tpl");
+ $page_template = Renderer::getMarkupTemplate("threaded_conversation.tpl");
$conv = new Thread($mode, $preview, $writable);
@@ -751,13 +753,13 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ
$threads = $conv->getTemplateData($conv_responses);
if (!$threads) {
- logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
+ Logger::log('[ERROR] conversation : Failed to get template data.', Logger::DEBUG);
$threads = [];
}
}
}
- $o = replace_macros($page_template, [
+ $o = Renderer::replaceMacros($page_template, [
'$baseurl' => System::baseUrl($ssl_state),
'$return_path' => $a->query_string,
'$live_update' => $live_update_div,
@@ -1061,7 +1063,7 @@ function format_like($cnt, array $arr, $type, $id) {
}
$phrase .= EOL ;
- $o .= replace_macros(get_markup_template('voting_fakelink.tpl'), [
+ $o .= Renderer::replaceMacros(Renderer::getMarkupTemplate('voting_fakelink.tpl'), [
'$phrase' => $phrase,
'$type' => $type,
'$id' => $id
@@ -1075,10 +1077,10 @@ function status_editor(App $a, $x, $notes_cid = 0, $popup = false)
{
$o = '';
- $geotag = x($x, 'allow_location') ? replace_macros(get_markup_template('jot_geotag.tpl'), []) : '';
+ $geotag = x($x, 'allow_location') ? Renderer::replaceMacros(Renderer::getMarkupTemplate('jot_geotag.tpl'), []) : '';
- $tpl = get_markup_template('jot-header.tpl');
- $a->page['htmlhead'] .= replace_macros($tpl, [
+ $tpl = Renderer::getMarkupTemplate('jot-header.tpl');
+ $a->page['htmlhead'] .= Renderer::replaceMacros($tpl, [
'$newpost' => 'true',
'$baseurl' => System::baseUrl(true),
'$geotag' => $geotag,
@@ -1116,10 +1118,10 @@ function status_editor(App $a, $x, $notes_cid = 0, $popup = false)
$public_post_link = '&public=1';
}
- // $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
- $tpl = get_markup_template("jot.tpl");
+ // $tpl = Renderer::replaceMacros($tpl,array('$jotplugins' => $jotplugins));
+ $tpl = Renderer::getMarkupTemplate("jot.tpl");
- $o .= replace_macros($tpl,[
+ $o .= Renderer::replaceMacros($tpl,[
'$new_post' => L10n::t('New Post'),
'$return_path' => $query_str,
'$action' => 'item',
diff --git a/include/enotify.php b/include/enotify.php
index 5665f485f4..339e31a3c8 100644
--- a/include/enotify.php
+++ b/include/enotify.php
@@ -7,6 +7,8 @@ use Friendica\Content\Text\BBCode;
use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
+use Friendica\Core\Renderer;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\Contact;
@@ -29,7 +31,7 @@ function notification($params)
// Temporary logging for finding the origin
if (!isset($params['language']) || !isset($params['uid'])) {
- logger('Missing parameters.' . System::callstack());
+ Logger::log('Missing parameters.' . System::callstack());
}
// Ensure that the important fields are set at any time
@@ -37,7 +39,7 @@ function notification($params)
$user = DBA::selectFirst('user', $fields, ['uid' => $params['uid']]);
if (!DBA::isResult($user)) {
- logger('Unknown user ' . $params['uid']);
+ Logger::log('Unknown user ' . $params['uid']);
return;
}
@@ -133,7 +135,7 @@ function notification($params)
if ($params['type'] == NOTIFY_COMMENT) {
$thread = Item::selectFirstThreadForUser($params['uid'] ,['ignored'], ['iid' => $parent_id]);
if (DBA::isResult($thread) && $thread["ignored"]) {
- logger("Thread ".$parent_id." will be ignored", LOGGER_DEBUG);
+ Logger::log("Thread ".$parent_id." will be ignored", Logger::DEBUG);
L10n::popLang();
return;
}
@@ -452,7 +454,7 @@ function notification($params)
$itemlink = $h['itemlink'];
if ($show_in_notification_page) {
- logger("adding notification entry", LOGGER_DEBUG);
+ Logger::log("adding notification entry", Logger::DEBUG);
do {
$dups = false;
$hash = random_string();
@@ -516,7 +518,7 @@ function notification($params)
}
$itemlink = System::baseUrl().'/notify/view/'.$notify_id;
- $msg = replace_macros($epreamble, ['$itemlink' => $itemlink]);
+ $msg = Renderer::replaceMacros($epreamble, ['$itemlink' => $itemlink]);
$msg_cache = format_notification_message($datarray['name_cache'], strip_tags(BBCode::convert($msg)));
$fields = ['msg' => $msg, 'msg_cache' => $msg_cache];
@@ -529,14 +531,14 @@ function notification($params)
|| $params['type'] == NOTIFY_SYSTEM
|| $params['type'] == SYSTEM_EMAIL) {
- logger('sending notification email');
+ Logger::log('sending notification email');
if (isset($params['parent']) && (intval($params['parent']) != 0)) {
$id_for_parent = $params['parent']."@".$hostname;
// Is this the first email notification for this parent item and user?
if (!DBA::exists('notify-threads', ['master-parent-item' => $params['parent'], 'receiver-uid' => $params['uid']])) {
- logger("notify_id:".intval($notify_id).", parent: ".intval($params['parent'])."uid: ".intval($params['uid']), LOGGER_DEBUG);
+ Logger::log("notify_id:".intval($notify_id).", parent: ".intval($params['parent'])."uid: ".intval($params['uid']), Logger::DEBUG);
$fields = ['notify-id' => $notify_id, 'master-parent-item' => $params['parent'],
'receiver-uid' => $params['uid'], 'parent-item' => 0];
@@ -545,11 +547,11 @@ function notification($params)
$additional_mail_header .= "Message-ID: <${id_for_parent}>\n";
$log_msg = "include/enotify: No previous notification found for this parent:\n".
" parent: ${params['parent']}\n"." uid : ${params['uid']}\n";
- logger($log_msg, LOGGER_DEBUG);
+ Logger::log($log_msg, Logger::DEBUG);
} else {
// If not, just "follow" the thread.
$additional_mail_header .= "References: <${id_for_parent}>\nIn-Reply-To: <${id_for_parent}>\n";
- logger("There's already a notification for this parent.", LOGGER_DEBUG);
+ Logger::log("There's already a notification for this parent.", Logger::DEBUG);
}
}
@@ -588,8 +590,8 @@ function notification($params)
$content_allowed = ((!Config::get('system', 'enotify_no_content')) || ($params['type'] == SYSTEM_EMAIL));
// load the template for private message notifications
- $tpl = get_markup_template('email_notify_html.tpl');
- $email_html_body = replace_macros($tpl, [
+ $tpl = Renderer::getMarkupTemplate('email_notify_html.tpl');
+ $email_html_body = Renderer::replaceMacros($tpl, [
'$banner' => $datarray['banner'],
'$product' => $datarray['product'],
'$preamble' => str_replace("\n", "
\n", $datarray['preamble']),
@@ -609,8 +611,8 @@ function notification($params)
]);
// load the template for private message notifications
- $tpl = get_markup_template('email_notify_text.tpl');
- $email_text_body = replace_macros($tpl, [
+ $tpl = Renderer::getMarkupTemplate('email_notify_text.tpl');
+ $email_text_body = Renderer::replaceMacros($tpl, [
'$banner' => $datarray['banner'],
'$product' => $datarray['product'],
'$preamble' => $datarray['preamble'],
diff --git a/include/items.php b/include/items.php
index 54ae7a82ce..961a20b240 100644
--- a/include/items.php
+++ b/include/items.php
@@ -8,8 +8,10 @@ use Friendica\Content\Feature;
use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
+use Friendica\Core\Renderer;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\Item;
@@ -109,7 +111,7 @@ function query_page_info($url, $photo = "", $keywords = false, $keyword_blacklis
$data["images"][0]["src"] = $photo;
}
- logger('fetch page info for ' . $url . ' ' . print_r($data, true), LOGGER_DEBUG);
+ Logger::log('fetch page info for ' . $url . ' ' . print_r($data, true), Logger::DEBUG);
if (!$keywords && isset($data["keywords"])) {
unset($data["keywords"]);
@@ -167,7 +169,7 @@ function add_page_info($url, $no_photos = false, $photo = "", $keywords = false,
function add_page_info_to_body($body, $texturl = false, $no_photos = false)
{
- logger('add_page_info_to_body: fetch page info for body ' . $body, LOGGER_DEBUG);
+ Logger::log('add_page_info_to_body: fetch page info for body ' . $body, Logger::DEBUG);
$URLSearchString = "^\[\]";
@@ -251,7 +253,7 @@ function consume_feed($xml, array $importer, array $contact, &$hub, $datedir = 0
// Test - remove before flight
//$tempfile = tempnam(get_temppath(), "ostatus2");
//file_put_contents($tempfile, $xml);
- logger("Consume OStatus messages ", LOGGER_DEBUG);
+ Logger::log("Consume OStatus messages ", Logger::DEBUG);
OStatus::import($xml, $importer, $contact, $hub);
}
@@ -260,7 +262,7 @@ function consume_feed($xml, array $importer, array $contact, &$hub, $datedir = 0
if ($contact['network'] === Protocol::FEED) {
if ($pass < 2) {
- logger("Consume feeds", LOGGER_DEBUG);
+ Logger::log("Consume feeds", Logger::DEBUG);
Feed::import($xml, $importer, $contact, $hub);
}
@@ -268,10 +270,10 @@ function consume_feed($xml, array $importer, array $contact, &$hub, $datedir = 0
}
if ($contact['network'] === Protocol::DFRN) {
- logger("Consume DFRN messages", LOGGER_DEBUG);
+ Logger::log("Consume DFRN messages", Logger::DEBUG);
$dfrn_importer = DFRN::getImporter($contact["id"], $importer["uid"]);
if (!empty($dfrn_importer)) {
- logger("Now import the DFRN feed");
+ Logger::log("Now import the DFRN feed");
DFRN::import($xml, $dfrn_importer, true);
return;
}
@@ -310,7 +312,7 @@ function subscribe_to_hub($url, array $importer, array $contact, $hubmode = 'sub
$params= 'hub.mode=' . $hubmode . '&hub.callback=' . urlencode($push_url) . '&hub.topic=' . urlencode($contact['poll']) . '&hub.verify=async&hub.verify_token=' . $verify_token;
- logger('subscribe_to_hub: ' . $hubmode . ' ' . $contact['name'] . ' to hub ' . $url . ' endpoint: ' . $push_url . ' with verifier ' . $verify_token);
+ Logger::log('subscribe_to_hub: ' . $hubmode . ' ' . $contact['name'] . ' to hub ' . $url . ' endpoint: ' . $push_url . ' with verifier ' . $verify_token);
if (!strlen($contact['hub-verify']) || ($contact['hub-verify'] != $verify_token)) {
DBA::update('contact', ['hub-verify' => $verify_token], ['id' => $contact['id']]);
@@ -318,7 +320,7 @@ function subscribe_to_hub($url, array $importer, array $contact, $hubmode = 'sub
$postResult = Network::post($url, $params);
- logger('subscribe_to_hub: returns: ' . $postResult->getReturnCode(), LOGGER_DEBUG);
+ Logger::log('subscribe_to_hub: returns: ' . $postResult->getReturnCode(), Logger::DEBUG);
return;
@@ -343,7 +345,7 @@ function drop_items(array $items)
}
}
-function drop_item($id)
+function drop_item($id, $return = '')
{
$a = BaseObject::getApp();
@@ -389,7 +391,7 @@ function drop_item($id)
}
}
- return replace_macros(get_markup_template('confirm.tpl'), [
+ return Renderer::replaceMacros(Renderer::getMarkupTemplate('confirm.tpl'), [
'$method' => 'get',
'$message' => L10n::t('Do you really want to delete this item?'),
'$extra_inputs' => $inputs,
@@ -407,8 +409,15 @@ function drop_item($id)
// delete the item
Item::deleteForUser(['id' => $item['id']], local_user());
- $a->internalRedirect('network');
- //NOTREACHED
+ $return_url = hex2bin($return);
+ if (empty($return_url) || strpos($return_url, 'display') !== false) {
+ $a->internalRedirect('network');
+ //NOTREACHED
+ }
+ else {
+ $a->internalRedirect($return_url);
+ //NOTREACHED
+ }
} else {
notice(L10n::t('Permission denied.') . EOL);
$a->internalRedirect('display/' . $item['guid']);
@@ -480,7 +489,7 @@ function posted_date_widget($url, $uid, $wall)
$cutoff_year = intval(DateTimeFormat::localNow('Y')) - $visible_years;
$cutoff = ((array_key_exists($cutoff_year, $ret))? true : false);
- $o = replace_macros(get_markup_template('posted_date_widget.tpl'),[
+ $o = Renderer::replaceMacros(Renderer::getMarkupTemplate('posted_date_widget.tpl'),[
'$title' => L10n::t('Archives'),
'$size' => $visible_years,
'$cutoff_year' => $cutoff_year,
diff --git a/include/text.php b/include/text.php
index 2d497bd58b..7f66268ad4 100644
--- a/include/text.php
+++ b/include/text.php
@@ -23,38 +23,12 @@ use Friendica\Util\DateTimeFormat;
use Friendica\Util\Map;
use Friendica\Util\Proxy as ProxyUtils;
+use Friendica\Core\Logger;
+use Friendica\Core\Renderer;
+use Friendica\Model\FileTag;
+
require_once "include/conversation.php";
-/**
- * This is our template processor
- *
- * @param string|FriendicaSmarty $s the string requiring macro substitution,
- * or an instance of FriendicaSmarty
- * @param array $r key value pairs (search => replace)
- * @return string substituted string
- */
-function replace_macros($s, $r) {
-
- $stamp1 = microtime(true);
-
- $a = get_app();
-
- // pass $baseurl to all templates
- $r['$baseurl'] = System::baseUrl();
-
- $t = $a->getTemplateEngine();
- try {
- $output = $t->replaceMacros($s, $r);
- } catch (Exception $e) {
- echo "
" . __FUNCTION__ . ": " . $e->getMessage() . "
";
- killme();
- }
-
- $a->saveTimestamp($stamp1, "rendering");
-
- return $output;
-}
-
/**
* @brief Generates a pseudo-random string of hexadecimal characters
*
@@ -267,8 +241,8 @@ function unxmlify($s) {
* @return string html for loader
*/
function scroll_loader() {
- $tpl = get_markup_template("scroll_loader.tpl");
- return replace_macros($tpl, [
+ $tpl = Renderer::getMarkupTemplate("scroll_loader.tpl");
+ return Renderer::replaceMacros($tpl, [
'wait' => L10n::t('Loading more entries...'),
'end' => L10n::t('The end')
]);
@@ -336,30 +310,6 @@ function perms2str($p) {
return $ret;
}
-/**
- * load template $s
- *
- * @param string $s
- * @param string $root
- * @return string
- */
-function get_markup_template($s, $root = '') {
- $stamp1 = microtime(true);
-
- $a = get_app();
- $t = $a->getTemplateEngine();
- try {
- $template = $t->getTemplateFile($s, $root);
- } catch (Exception $e) {
- echo "" . __FUNCTION__ . ": " . $e->getMessage() . "
";
- killme();
- }
-
- $a->saveTimestamp($stamp1, "file");
-
- return $template;
-}
-
/**
* for html,xml parsing - let's say you've got
* an attribute foobar="class1 class2 class3"
@@ -379,139 +329,6 @@ function attribute_contains($attr, $s) {
return (count($a) && in_array($s,$a));
}
-
-/* setup int->string log level map */
-$LOGGER_LEVELS = [];
-
-/**
- * @brief Logs the given message at the given log level
- *
- * log levels:
- * LOGGER_WARNING
- * LOGGER_INFO (default)
- * LOGGER_TRACE
- * LOGGER_DEBUG
- * LOGGER_DATA
- * LOGGER_ALL
- *
- * @global array $LOGGER_LEVELS
- * @param string $msg
- * @param int $level
- */
-function logger($msg, $level = LOGGER_INFO) {
- $a = get_app();
- global $LOGGER_LEVELS;
-
- $debugging = Config::get('system', 'debugging');
- $logfile = Config::get('system', 'logfile');
- $loglevel = intval(Config::get('system', 'loglevel'));
-
- if (
- !$debugging
- || !$logfile
- || $level > $loglevel
- ) {
- return;
- }
-
- if (count($LOGGER_LEVELS) == 0) {
- foreach (get_defined_constants() as $k => $v) {
- if (substr($k, 0, 7) == "LOGGER_") {
- $LOGGER_LEVELS[$v] = substr($k, 7, 7);
- }
- }
- }
-
- $process_id = session_id();
-
- if ($process_id == '') {
- $process_id = get_app()->process_id;
- }
-
- $callers = debug_backtrace();
-
- if (count($callers) > 1) {
- $function = $callers[1]['function'];
- } else {
- $function = '';
- }
-
- $logline = sprintf("%s@%s\t[%s]:%s:%s:%s\t%s\n",
- DateTimeFormat::utcNow(DateTimeFormat::ATOM),
- $process_id,
- $LOGGER_LEVELS[$level],
- basename($callers[0]['file']),
- $callers[0]['line'],
- $function,
- $msg
- );
-
- $stamp1 = microtime(true);
- @file_put_contents($logfile, $logline, FILE_APPEND);
- $a->saveTimestamp($stamp1, "file");
-}
-
-/**
- * @brief An alternative logger for development.
- * Works largely as logger() but allows developers
- * to isolate particular elements they are targetting
- * personally without background noise
- *
- * log levels:
- * LOGGER_WARNING
- * LOGGER_INFO (default)
- * LOGGER_TRACE
- * LOGGER_DEBUG
- * LOGGER_DATA
- * LOGGER_ALL
- *
- * @global array $LOGGER_LEVELS
- * @param string $msg
- * @param int $level
- */
-function dlogger($msg, $level = LOGGER_INFO) {
- $a = get_app();
-
- $logfile = Config::get('system', 'dlogfile');
- if (!$logfile) {
- return;
- }
-
- $dlogip = Config::get('system', 'dlogip');
- if (!is_null($dlogip) && $_SERVER['REMOTE_ADDR'] != $dlogip) {
- return;
- }
-
- if (count($LOGGER_LEVELS) == 0) {
- foreach (get_defined_constants() as $k => $v) {
- if (substr($k, 0, 7) == "LOGGER_") {
- $LOGGER_LEVELS[$v] = substr($k, 7, 7);
- }
- }
- }
-
- $process_id = session_id();
-
- if ($process_id == '') {
- $process_id = $a->process_id;
- }
-
- $callers = debug_backtrace();
- $logline = sprintf("%s@\t%s:\t%s:\t%s\t%s\t%s\n",
- DateTimeFormat::utcNow(),
- $process_id,
- basename($callers[0]['file']),
- $callers[0]['line'],
- $callers[1]['function'],
- $msg
- );
-
- $stamp1 = microtime(true);
- @file_put_contents($logfile, $logline, FILE_APPEND);
- $a->saveTimestamp($stamp1, "file");
-}
-
-
/**
* Compare activity uri. Knows about activity namespace.
*
@@ -671,8 +488,8 @@ function contact_block() {
}
}
- $tpl = get_markup_template('contact_block.tpl');
- $o = replace_macros($tpl, [
+ $tpl = Renderer::getMarkupTemplate('contact_block.tpl');
+ $o = Renderer::replaceMacros($tpl, [
'$contacts' => $contacts,
'$nickname' => $a->profile['nickname'],
'$viewcontacts' => L10n::t('View Contacts'),
@@ -729,7 +546,7 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
$url = '';
}
- return replace_macros(get_markup_template(($textmode)?'micropro_txt.tpl':'micropro_img.tpl'),[
+ return Renderer::replaceMacros(Renderer::getMarkupTemplate(($textmode)?'micropro_txt.tpl':'micropro_img.tpl'),[
'$click' => defaults($contact, 'click', ''),
'$class' => $class,
'$url' => $url,
@@ -784,7 +601,7 @@ function search($s, $id = 'search-box', $url = 'search', $save = false, $aside =
}
}
- return replace_macros(get_markup_template('searchbox.tpl'), $values);
+ return Renderer::replaceMacros(Renderer::getMarkupTemplate('searchbox.tpl'), $values);
}
/**
@@ -1062,14 +879,14 @@ function prepare_body(array &$item, $attach = false, $is_preview = false)
if (strpos($mime, 'video') !== false) {
if (!$vhead) {
$vhead = true;
- $a->page['htmlhead'] .= replace_macros(get_markup_template('videos_head.tpl'), [
+ $a->page['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('videos_head.tpl'), [
'$baseurl' => System::baseUrl(),
]);
}
$url_parts = explode('/', $the_url);
$id = end($url_parts);
- $as .= replace_macros(get_markup_template('video_top.tpl'), [
+ $as .= Renderer::replaceMacros(Renderer::getMarkupTemplate('video_top.tpl'), [
'$video' => [
'id' => $id,
'title' => L10n::t('View Video'),
@@ -1164,8 +981,8 @@ function prepare_body(array &$item, $attach = false, $is_preview = false)
function apply_content_filter($html, array $reasons)
{
if (count($reasons)) {
- $tpl = get_markup_template('wall/content_filter.tpl');
- $html = replace_macros($tpl, [
+ $tpl = Renderer::getMarkupTemplate('wall/content_filter.tpl');
+ $html = Renderer::replaceMacros($tpl, [
'$reasons' => $reasons,
'$rnd' => random_string(8),
'$openclose' => L10n::t('Click to open/close'),
@@ -1230,9 +1047,9 @@ function get_cats_and_terms($item)
if ($cnt) {
foreach ($matches as $mtch) {
$categories[] = [
- 'name' => xmlify(file_tag_decode($mtch[1])),
+ 'name' => xmlify(FileTag::decode($mtch[1])),
'url' => "#",
- 'removeurl' => ((local_user() == $item['uid'])?'filerm/' . $item['id'] . '?f=&cat=' . xmlify(file_tag_decode($mtch[1])):""),
+ 'removeurl' => ((local_user() == $item['uid'])?'filerm/' . $item['id'] . '?f=&cat=' . xmlify(FileTag::decode($mtch[1])):""),
'first' => $first,
'last' => false
];
@@ -1251,9 +1068,9 @@ function get_cats_and_terms($item)
if ($cnt) {
foreach ($matches as $mtch) {
$folders[] = [
- 'name' => xmlify(file_tag_decode($mtch[1])),
+ 'name' => xmlify(FileTag::decode($mtch[1])),
'url' => "#",
- 'removeurl' => ((local_user() == $item['uid']) ? 'filerm/' . $item['id'] . '?f=&term=' . xmlify(file_tag_decode($mtch[1])) : ""),
+ 'removeurl' => ((local_user() == $item['uid']) ? 'filerm/' . $item['id'] . '?f=&term=' . xmlify(FileTag::decode($mtch[1])) : ""),
'first' => $first,
'last' => false
];
@@ -1353,7 +1170,7 @@ function base64url_encode($s, $strip_padding = false) {
function base64url_decode($s) {
if (is_array($s)) {
- logger('base64url_decode: illegal input: ' . print_r(debug_backtrace(), true));
+ Logger::log('base64url_decode: illegal input: ' . print_r(debug_backtrace(), true));
return $s;
}
@@ -1491,199 +1308,6 @@ function item_post_type($item) {
return L10n::t('post');
}
-// post categories and "save to file" use the same item.file table for storage.
-// We will differentiate the different uses by wrapping categories in angle brackets
-// and save to file categories in square brackets.
-// To do this we need to escape these characters if they appear in our tag.
-
-function file_tag_encode($s) {
- return str_replace(['<','>','[',']'],['%3c','%3e','%5b','%5d'],$s);
-}
-
-function file_tag_decode($s) {
- return str_replace(['%3c', '%3e', '%5b', '%5d'], ['<', '>', '[', ']'], $s);
-}
-
-function file_tag_file_query($table,$s,$type = 'file') {
-
- if ($type == 'file') {
- $str = preg_quote('[' . str_replace('%', '%%', file_tag_encode($s)) . ']');
- } else {
- $str = preg_quote('<' . str_replace('%', '%%', file_tag_encode($s)) . '>');
- }
- return " AND " . (($table) ? DBA::escape($table) . '.' : '') . "file regexp '" . DBA::escape($str) . "' ";
-}
-
-// ex. given music,video return