diff --git a/addon/poormancron/poormancron.php b/addon/poormancron/poormancron.php new file mode 100644 index 0000000000..c31d2772c8 --- /dev/null +++ b/addon/poormancron/poormancron.php @@ -0,0 +1,48 @@ +300) { + set_config('poormancron','lastupdate', $now); + $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); + proc_run($php_path,"include/poller.php"); + } +} + +function poormancron_procrun($a, $argv) { + logger("poormancron procrun ".implode(", ",$argv)); + array_shift($argv); + $argc = count($argv); + logger("poormancron procrun require_once ".basename($argv[0])); + require_once(basename($argv[0])); + $funcname=str_replace(".php", "", basename($argv[0]))."_run"; + + $funcname($argv, $argc); +} + + + +?> diff --git a/boot.php b/boot.php index 3cc98cc9b6..223c9416d1 100644 --- a/boot.php +++ b/boot.php @@ -1655,7 +1655,6 @@ function attribute_contains($attr,$s) { if(! function_exists('logger')) { function logger($msg,$level = 0) { - $debugging = get_config('system','debugging'); $loglevel = intval(get_config('system','loglevel')); $logfile = get_config('system','logfile'); @@ -2225,7 +2224,31 @@ function prepare_body($item) { $s = smilies(bbcode($item['body'])); return $s; +}} +/** + * + * Wrap calls to proc_close(proc_open()) and call hook + * so plugins can take part in process :) + * + * args: + * $cmd program to run + * next args are passed as $cmd command line + * + * e.g.: proc_run("ls","-la","/tmp"); + * + * $cmd and string args are surrounded with "" + */ +if(! function_exists('run_proc')) { +function proc_run($cmd){ + $args = func_get_args(); + call_hooks("proc_run", $args); + + foreach ($args as &$arg){ + if(is_string($arg)) $arg='"'.$arg.'"'; + } + $cmdline = implode($args," "); + proc_close(proc_open($cmdline." &",array(),$foo)); +}} -}} \ No newline at end of file diff --git a/include/directory.php b/include/directory.php index 5f835dc4bf..2c9daa5ea6 100644 --- a/include/directory.php +++ b/include/directory.php @@ -1,17 +1,22 @@ set_baseurl(get_config('system','url')); @@ -29,8 +34,9 @@ case 'mail': default: $item_id = intval($argv[2]); - if(! $item_id) - killme(); + if(! $item_id){ + return; + } break; } @@ -42,22 +48,24 @@ $message = q("SELECT * FROM `mail` WHERE `id` = %d LIMIT 1", intval($item_id) ); - if(! count($message)) - killme(); + if(! count($message)){ + return; + } $uid = $message[0]['uid']; $recipients[] = $message[0]['contact-id']; $item = $message[0]; } else { - // find ancestors + // find ancestors $r = q("SELECT `parent`, `uid`, `edited` FROM `item` WHERE `id` = %d LIMIT 1", intval($item_id) ); - if(! count($r)) - killme(); - + if(! count($r)){ + return; + } + $parent_id = $r[0]['parent']; $uid = $r[0]['uid']; $updated = $r[0]['edited']; @@ -66,8 +74,9 @@ intval($parent_id) ); - if(! count($items)) - killme(); + if(! count($items)){ + return; + } } $r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, `user`.`page-flags` @@ -78,9 +87,9 @@ if(count($r)) $owner = $r[0]; - else - killme(); - + else { + return; + } $hub = get_config('system','huburl'); // If this is a public conversation, notify the feed hub @@ -150,8 +159,9 @@ $r = q("SELECT * FROM `contact` WHERE `id` IN ( $conversant_str ) AND `blocked` = 0 AND `pending` = 0"); - if( ! count($r)) - killme(); + if( ! count($r)){ + return; + } $contacts = $r; } @@ -248,9 +258,9 @@ $r = q("SELECT * FROM `contact` WHERE `id` IN ( %s ) AND `blocked` = 0 ", dbesc($recip_str) ); - if(! count($r)) - killme(); - + if(! count($r)){ + return; + } // delivery loop require_once('include/salmon.php'); @@ -360,5 +370,11 @@ } } - killme(); + return; +} +if (array_search(__file__,get_included_files())===0){ + echo "run!"; + notifier_run($argv,$argc); + killme(); +} diff --git a/include/poller.php b/include/poller.php index 024b9fbcd3..1003b2f081 100644 --- a/include/poller.php +++ b/include/poller.php @@ -1,14 +1,19 @@ set_baseurl(get_config('system','url')); logger('poller: start'); - + // run queue delivery process in the background $php_path = ((x($a->config,'php_path') && strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); - proc_close(proc_open("\"$php_path\" \"include/queue.php\" &", array(), $foo)); + //proc_close(proc_open("\"$php_path\" \"include/queue.php\" &", array(), $foo)); + proc_run($php_path,"include/queue.php"); $hub_update = false; @@ -46,8 +52,9 @@ $sql_extra AND `self` = 0 AND `blocked` = 0 AND `readonly` = 0 ORDER BY RAND()"); - if(! count($contacts)) - killme(); + if(! count($contacts)){ + return; + } foreach($contacts as $contact) { @@ -265,7 +272,10 @@ // loop - next contact } - killme(); - - + return; +} +if (array_search(__file__,get_included_files())===0){ + poller_run($argv,$argc); + killme(); +} diff --git a/include/queue.php b/include/queue.php index 96ddfa81bc..d4fc7dbd62 100644 --- a/include/queue.php +++ b/include/queue.php @@ -1,5 +1,5 @@ config['php_path'])) ? $a->config['php_path'] : 'php'); - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"activity\" \"$i\" &", - array(),$foo)); + //proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"activity\" \"$i\" &", array(),$foo)); + proc_run($php_path,"include/notifier.php","activity","$i"); } diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index f581702d8e..f904b06bc5 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -304,9 +304,9 @@ function dfrn_notify_post(&$a) { $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"comment-import\" \"$posted_id\" &", - array(),$foo)); - + //proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"comment-import\" \"$posted_id\" &", array(),$foo)); + proc_run($php_path,"include/notifier.php","comment-import","$posted_id"); + if((! $is_like) && ($importer['notify-flags'] & NOTIFY_COMMENT) && (! $importer['self'])) { require_once('bbcode.php'); $from = stripslashes($datarray['author-name']); diff --git a/mod/follow.php b/mod/follow.php index b4e50fa451..a90ae3f512 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -208,8 +208,8 @@ function follow_post(&$a) { // pull feed and consume it, which should subscribe to the hub. $php_path = ((x($a->config,'php_path') && strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); - proc_close(proc_open("\"$php_path\" \"include/poller.php\" \"$contact_id\" &", array(), $foo)); - + //proc_close(proc_open("\"$php_path\" \"include/poller.php\" \"$contact_id\" &", array(), $foo)); + proc_run($php_path,"include/poller.php","$contact_id"); // create a follow slap diff --git a/mod/item.php b/mod/item.php index feef7c95f8..11e79a7ab2 100644 --- a/mod/item.php +++ b/mod/item.php @@ -421,8 +421,7 @@ function item_post(&$a) { logger('mod_item: notifier invoked: ' . "\"$php_path\" \"include/notifier.php\" \"$notify_type\" \"$post_id\" &"); - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"$notify_type\" \"$post_id\" &", - array(),$foo)); + proc_run($php_path, "include/notifier.php", $notify_type, "$post_id"); $datarray['id'] = $post_id; @@ -520,8 +519,8 @@ function item_content(&$a) { // send the notification upstream/downstream as the case may be - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" &", - array(), $foo)); + //proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" &", array(), $foo)); + proc_run($php_path,"include/notifier.php","drop","$drop_id"); goaway($a->get_baseurl() . '/' . $_SESSION['return_url']); return; //NOTREACHED diff --git a/mod/like.php b/mod/like.php index 7b20975781..c78c1f030c 100644 --- a/mod/like.php +++ b/mod/like.php @@ -102,8 +102,8 @@ function like_content(&$a) { ); $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"like\" \"$post_id\" &", - array(),$foo)); + //proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"like\" \"$post_id\" &", array(),$foo)); + proc_run($php_path,"include/notifier.php","like","$post_id"); return; } @@ -176,8 +176,8 @@ EOT; $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"like\" \"$post_id\" &", - array(),$foo)); + //proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"like\" \"$post_id\" &", array(),$foo)); + proc_run($php_path,"include/notifier.php","like","$post_id"); return; // NOTREACHED } \ No newline at end of file diff --git a/mod/message.php b/mod/message.php index 9cc2e2826c..7615f22bec 100644 --- a/mod/message.php +++ b/mod/message.php @@ -72,8 +72,8 @@ function message_post(&$a) { $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); if($post_id) { - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"mail\" \"$post_id\" &", - array(),$foo)); + //proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"mail\" \"$post_id\" &", array(),$foo)); + proc_run($php_path,"include/notifier.php","mail","$post_id"); notice( t('Message sent.') . EOL ); } else { diff --git a/mod/photos.php b/mod/photos.php index 2a55fa5e9a..82060378e6 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -187,9 +187,8 @@ foreach($_FILES AS $key => $val) { // send the notification upstream/downstream as the case may be if($rr['visible']) - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" & ", - array(),$foo)); - + //proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" & ",array(),$foo)); + proc_run($php_path,"include/notifier.php","drop","$drop_id"); } } } @@ -236,8 +235,8 @@ foreach($_FILES AS $key => $val) { $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); if($i[0]['visible']) - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" & ", - array(),$foo)); + //proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"drop\" \"$drop_id\" & ", array(),$foo)); + proc_run($php_path,"include/notifier.php","drop","$drop_id"); } } @@ -462,8 +461,8 @@ foreach($_FILES AS $key => $val) { $item_id = item_store($arr); $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"tag\" \"$item_id\" & ", - array(),$foo)); + //proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"tag\" \"$item_id\" & ",array(),$foo)); + proc_run($php_path,"include/notifier.php","tag","$item_id"); } } diff --git a/mod/profile_photo.php b/mod/profile_photo.php index 64093b2de0..8b72bfca06 100644 --- a/mod/profile_photo.php +++ b/mod/profile_photo.php @@ -90,8 +90,8 @@ function profile_photo_post(&$a) { $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); $url = $_SESSION['my_url']; if($url && strlen(get_config('system','directory_submit_url'))) - proc_close(proc_open("\"$php_path\" \"include/directory.php\" \"$url\" &", - array(),$foo)); + //proc_close(proc_open("\"$php_path\" \"include/directory.php\" \"$url\" &",array(),$foo)); + proc_run($php_path,"include/directory.php","$url"); } else notice( t('Unable to process image') . EOL); diff --git a/mod/profiles.php b/mod/profiles.php index 0bb476549e..d74219501a 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -203,8 +203,8 @@ function profiles_post(&$a) { $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); $url = $_SESSION['my_url']; if($url && strlen(get_config('system','directory_submit_url'))) - proc_close(proc_open("\"$php_path\" \"include/directory.php\" \"$url\" &", - array(),$foo)); + //proc_close(proc_open("\"$php_path\" \"include/directory.php\" \"$url\" &", array(),$foo)); + proc_run($php_path,"include/directory.php","$url"); } } } diff --git a/mod/settings.php b/mod/settings.php index 32906d86e7..dbbac8bdeb 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -182,8 +182,8 @@ function settings_post(&$a) { $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); $url = $_SESSION['my_url']; if($url && strlen(get_config('system','directory_submit_url'))) - proc_close(proc_open("\"$php_path\" \"include/directory.php\" \"$url\" &", - array(),$foo)); + //proc_close(proc_open("\"$php_path\" \"include/directory.php\" \"$url\" &",array(),$foo)); + proc_run($php_path,"include/directory.php","$url"); } $_SESSION['theme'] = $theme;