define ( 'FRIENDICA_CODENAME', 'Asparagus');
define ( 'FRIENDICA_VERSION', '3.5.1-dev' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
-define ( 'DB_UPDATE_VERSION', 1208 );
+define ( 'DB_UPDATE_VERSION', 1209 );
/**
* @brief Constant with a HTML line break.
public $videoheight = 350;
public $force_max_items = 0;
public $theme_thread_allow = true;
+ public $theme_richtext_editor = true;
public $theme_events_in_profile = true;
/**
$this->performance["markstart"] = microtime(true);
$this->callstack["database"] = array();
+ $this->callstack["database_write"] = array();
$this->callstack["network"] = array();
$this->callstack["file"] = array();
$this->callstack["rendering"] = array();
/**
* @brief Removes the baseurl from an url. This avoids some mixed content problems.
*
- * @param string $url
+ * @param string $orig_url
*
* @return string The cleaned url
*/
- function remove_baseurl($url){
+ function remove_baseurl($orig_url){
// Is the function called statically?
- if (!is_object($this))
- return(self::$a->remove_baseurl($url));
+ if (!is_object($this)) {
+ return(self::$a->remove_baseurl($orig_url));
+ }
- $url = normalise_link($url);
+ // Remove the hostname from the url if it is an internal link
+ $nurl = normalise_link($orig_url);
$base = normalise_link($this->get_baseurl());
- $url = str_replace($base."/", "", $url);
- return $url;
+ $url = str_replace($base."/", "", $nurl);
+
+ // if it is an external link return the orignal value
+ if ($url == normalise_link($orig_url)) {
+ return $orig_url;
+ } else {
+ return $url;
+ }
}
/**
function proc_run($args) {
+ if (!function_exists("proc_open")) {
+ return;
+ }
+
// Add the php path if it is a php call
- if (count($args) && ($args[0] === 'php' OR is_int($args[0]))) {
+ if (count($args) && ($args[0] === 'php' OR !is_string($args[0]))) {
// If the last worker fork was less than 10 seconds before then don't fork another one.
// This should prevent the forking of masses of workers.
* @brief Wrap calls to proc_close(proc_open()) and call hook
* so plugins can take part in process :)
*
- * @param (string|integer) $cmd program to run or priority
+ * @param (string|integer|array) $cmd program to run, priority or parameter array
*
* next args are passed as $cmd command line
* e.g.: proc_run("ls","-la","/tmp");
* or: proc_run(PRIORITY_HIGH, "include/notifier.php", "drop", $drop_id);
+ * or: proc_run(array('priority' => PRIORITY_HIGH, 'dont_fork' => true), "include/create_shadowentry.php", $post_id);
*
* @note $cmd and string args are surrounded with ""
*
$a = get_app();
- $args = func_get_args();
+ $proc_args = func_get_args();
- $newargs = array();
- if (!count($args))
+ $args = array();
+ if (!count($proc_args)) {
return;
+ }
- // expand any arrays
+ // Preserve the first parameter
+ // It could contain a command, the priority or an parameter array
+ // If we use the parameter array we have to protect it from the following function
+ $run_parameter = array_shift($proc_args);
- foreach($args as $arg) {
- if(is_array($arg)) {
- foreach($arg as $n) {
- $newargs[] = $n;
+ // expand any arrays
+ foreach ($proc_args as $arg) {
+ if (is_array($arg)) {
+ foreach ($arg as $n) {
+ $args[] = $n;
}
- } else
- $newargs[] = $arg;
+ } else {
+ $args[] = $arg;
+ }
}
- $args = $newargs;
+ // Now we add the run parameters back to the array
+ array_unshift($args, $run_parameter);
$arr = array('args' => $args, 'run_cmd' => true);
if (!$arr['run_cmd'] OR !count($args))
return;
- if (!get_config("system", "worker") OR
- (($args[0] != 'php') AND !is_int($args[0]))) {
+ if (!get_config("system", "worker") OR (is_string($run_parameter) AND ($run_parameter != 'php'))) {
$a->proc_run($args);
return;
}
- if (is_int($args[0]))
- $priority = $args[0];
- else
- $priority = PRIORITY_MEDIUM;
+ $priority = PRIORITY_MEDIUM;
+ $dont_fork = get_config("system", "worker_dont_fork");
+
+ if (is_int($run_parameter)) {
+ $priority = $run_parameter;
+ } elseif (is_array($run_parameter)) {
+ if (isset($run_parameter['priority'])) {
+ $priority = $run_parameter['priority'];
+ }
+ if (isset($run_parameter['dont_fork'])) {
+ $dont_fork = $run_parameter['dont_fork'];
+ }
+ }
$argv = $args;
array_shift($argv);
intval($priority));
// Should we quit and wait for the poller to be called as a cronjob?
- if (get_config("system", "worker_dont_fork"))
+ if ($dont_fork) {
return;
+ }
// Checking number of workers
$workers = q("SELECT COUNT(*) AS `workers` FROM `workerqueue` WHERE `executed` != '0000-00-00 00:00:00'");