mirror of
https://github.com/friendica/friendica
synced 2024-11-09 23:42:53 +00:00
reload plugins if they change
This commit is contained in:
parent
5f54503780
commit
32e96d2647
4 changed files with 62 additions and 5 deletions
56
boot.php
56
boot.php
|
@ -2,8 +2,8 @@
|
|||
|
||||
set_time_limit(0);
|
||||
|
||||
define ( 'BUILD_ID', 1039 );
|
||||
define ( 'FRIENDIKA_VERSION', '2.10.0910' );
|
||||
define ( 'BUILD_ID', 1040 );
|
||||
define ( 'FRIENDIKA_VERSION', '2.10.0912' );
|
||||
define ( 'DFRN_PROTOCOL_VERSION', '2.1' );
|
||||
|
||||
define ( 'EOL', "<br />\r\n" );
|
||||
|
@ -512,22 +512,70 @@ function check_config(&$a) {
|
|||
foreach($plugins_arr as $p) {
|
||||
if(! in_array($p,$installed_arr)) {
|
||||
logger("Addons: installing " . $p);
|
||||
$t = filemtime('addon/' . $p . '/' . $p . '.php');
|
||||
@include_once('addon/' . $p . '/' . $p . '.php');
|
||||
if(function_exists($p . '_install')) {
|
||||
$func = $p . '_install';
|
||||
$func();
|
||||
$r = q("INSERT INTO `addon` (`name`, `installed`) VALUES ( '%s', 1 ) ",
|
||||
dbesc($p)
|
||||
$r = q("INSERT INTO `addon` (`name`, `installed`, `timestamp`) VALUES ( '%s', 1, %d ) ",
|
||||
dbesc($p),
|
||||
intval($t)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
load_hooks();
|
||||
|
||||
return;
|
||||
}}
|
||||
|
||||
// reload all updated plugins
|
||||
|
||||
if(! function_exists('reload_plugins')) {
|
||||
function reload_plugins() {
|
||||
$plugins = get_config('system','addon');
|
||||
if(strlen($plugins)) {
|
||||
|
||||
$r = q("SELECT * FROM `addon` WHERE `installed` = 1");
|
||||
if(count($r))
|
||||
$installed = $r;
|
||||
else
|
||||
$installed = array();
|
||||
|
||||
$parr = explode(',',$plugins);
|
||||
if(count($parr)) {
|
||||
foreach($parr as $pl) {
|
||||
$pl = trim($pl);
|
||||
|
||||
$t = filemtime('addon/' . $pl . '/' . $pl . '.php');
|
||||
foreach($installed as $i) {
|
||||
if(($i['name'] == $pl) && ($i['timestamp'] != $t)) {
|
||||
logger('Reloading plugin: ' . $i['name']);
|
||||
@include_once('addon/' . $pl . '/' . $pl . '.php');
|
||||
|
||||
if(function_exists($pl . '_uninstall')) {
|
||||
$func = $pl . '_uninstall';
|
||||
$func();
|
||||
}
|
||||
if(function_exists($pl . '_install')) {
|
||||
$func = $pl . '_install';
|
||||
$func();
|
||||
}
|
||||
q("UPDATE `addon` SET `timestamp` = %d WHERE `id` = %d LIMIT 1",
|
||||
intval($t),
|
||||
intval($i['id'])
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}}
|
||||
|
||||
|
||||
|
||||
// This is our template processor.
|
||||
// $s is the string requiring macro substitution.
|
||||
|
|
|
@ -451,7 +451,8 @@ CREATE TABLE IF NOT EXISTS `addon` (
|
|||
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||
`name` CHAR( 255 ) NOT NULL ,
|
||||
`version` CHAR( 255 ) NOT NULL ,
|
||||
`installed` TINYINT( 1 ) NOT NULL DEFAULT '0'
|
||||
`installed` TINYINT( 1 ) NOT NULL DEFAULT '0' ,
|
||||
`timestamp` BIGINT NOT NULL DEFAULT '0'
|
||||
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
|
||||
|
|
|
@ -47,6 +47,11 @@ function poller_run($argv, $argc){
|
|||
|
||||
$sql_extra = (($manual_id) ? " AND `id` = $manual_id " : "");
|
||||
|
||||
$d = datetime_convert();
|
||||
call_hooks('cron', $d);
|
||||
|
||||
reload_plugins();
|
||||
|
||||
$contacts = q("SELECT `id` FROM `contact`
|
||||
WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
|
||||
$sql_extra
|
||||
|
|
|
@ -374,3 +374,6 @@ function update_1038() {
|
|||
q("ALTER TABLE `item` ADD `plink` CHAR( 255 ) NOT NULL AFTER `target` ");
|
||||
}
|
||||
|
||||
function update_1039() {
|
||||
q("ALTER TABLE `addon` ADD `timestamp` BIGINT NOT NULL DEFAULT '0'");
|
||||
}
|
Loading…
Reference in a new issue