X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=boot.php;h=0b5787abac4678fd0ff18ca4e2b38032b0e3afc7;hb=1f1fe4d5be45599b92846e95ac1d8a1134ee3cd1;hp=a97f858140863cc2569e8b903d6043b3b13614b3;hpb=b8757fb45624d038e1f072fa40fb439608532164;p=friendica.git diff --git a/boot.php b/boot.php index a97f858140..0b5787abac 100644 --- a/boot.php +++ b/boot.php @@ -2,9 +2,9 @@ set_time_limit(0); -define ( 'BUILD_ID', 1039 ); -define ( 'FRIENDIKA_VERSION', '2.10.0909' ); +define ( 'FRIENDIKA_VERSION', '2.1.925' ); define ( 'DFRN_PROTOCOL_VERSION', '2.1' ); +define ( 'DB_UPDATE_VERSION', 1044 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); @@ -40,6 +40,8 @@ define ( 'REGISTER_OPEN', 2 ); /** * relationship types + * When used in contact records, this indicates that 'uid' has + * this relationship with contact['name'] */ define ( 'REL_VIP', 1); @@ -157,6 +159,11 @@ if (get_magic_quotes_gpc()) { unset($process); } +/* + * translation system + */ +require_once("include/pgettext.php"); + /** * @@ -433,15 +440,15 @@ function check_config(&$a) { $build = get_config('system','build'); if(! x($build)) - $build = set_config('system','build',BUILD_ID); + $build = set_config('system','build',DB_UPDATE_VERSION); $url = get_config('system','url'); if(! x($url)) $url = set_config('system','url',$a->get_baseurl()); - if($build != BUILD_ID) { + if($build != DB_UPDATE_VERSION) { $stored = intval($build); - $current = intval(BUILD_ID); + $current = intval(DB_UPDATE_VERSION); if(($stored < $current) && file_exists('update.php')) { // We're reporting a different version than what is currently installed. // Run any existing update scripts to bring the database up to current. @@ -453,7 +460,7 @@ function check_config(&$a) { $func($a); } } - set_config('system','build', BUILD_ID); + set_config('system','build', DB_UPDATE_VERSION); } } @@ -510,22 +517,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. @@ -551,28 +606,6 @@ function replace_macros($s,$r) { }} -// load string translation table for alternate language - -if(! function_exists('load_translation_table')) { -function load_translation_table($lang) { - global $a; - - if(file_exists("view/$lang/strings.php")) - include("view/$lang/strings.php"); -}} - -// translate string if translation exists - -if(! function_exists('t')) { -function t($s) { - - $a = get_app(); - - if(x($a->strings,$s)) - return $a->strings[$s]; - return $s; -}} - // curl wrapper. If binary flag is true, return binary // results. @@ -1570,9 +1603,15 @@ function lrdd($uri) { if(! function_exists('fetch_lrdd_template')) { function fetch_lrdd_template($host) { $tpl = ''; - $url = 'http://' . $host . '/.well-known/host-meta' ; - $links = fetch_xrd_links($url); -logger('template: ' . print_r($links,true)); + + $url1 = 'https://' . $host . '/.well-known/host-meta' ; + $url2 = 'http://' . $host . '/.well-known/host-meta' ; + $links = fetch_xrd_links($url1); + logger('template (https): ' . print_r($links,true)); + if(! count($links)) { + $links = fetch_xrd_links($url2); + logger('template (http): ' . print_r($links,true)); + } if(count($links)) { foreach($links as $link) if($link['@attributes']['rel'] && $link['@attributes']['rel'] === 'lrdd') @@ -1775,7 +1814,7 @@ function allowed_email($email) { if(count($allowed)) { foreach($allowed as $a) { $pat = strtolower(trim($a)); - if(($fnmatch && fnmatch($pat,$host)) || ($pat == $host)) { + if(($fnmatch && fnmatch($pat,$domain)) || ($pat == $domain)) { $found = true; break; } @@ -1795,10 +1834,14 @@ if(! function_exists('format_like')) { function format_like($cnt,$arr,$type,$id) { $o = ''; if($cnt == 1) - $o .= $arr[0] . (($type === 'like') ? t(' likes this.') : t(' doesn\'t like this.')) . EOL ; + $o .= (($type === 'like') ? sprintf( t('%s likes this.'), $arr[0]) : sprintf( t('%s doesn\'t like this.'), $arr[0])) . EOL ; else { - $o .= '' - . $cnt . ' ' . t('people') . ' ' . (($type === 'like') ? t('like this.') : t('don\'t like this.')) . EOL ; + $spanatts = 'class="fakelink" onclick="openClose(\'' . $type . 'list-' . $id . '\');"'; + $o .= (($type === 'like') ? + sprintf( t('%2$d people like this.'), $spanatts, $cnt) + : + sprintf( t('%2$d people don\'t like this.'), $spanatts, $cnt) ); + $o .= EOL ; $total = count($arr); if($total >= MAX_LIKERS) $arr = array_slice($arr, 0, MAX_LIKERS - 1); @@ -1806,8 +1849,8 @@ function format_like($cnt,$arr,$type,$id) { $arr[count($arr)-1] = t('and') . ' ' . $arr[count($arr)-1]; $str = implode(', ', $arr); if($total >= MAX_LIKERS) - $str .= t(', and ') . $total - MAX_LIKERS . t(' other people'); - $str .= (($type === 'like') ? t(' like this.') : t(' don\'t like this.')); + $str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS ); + $str = (($type === 'like') ? sprintf( t('%s like this.'), $str) : sprintf( t('%s don\'t like this.'), $str)); $o .= "\t" . ''; } return $o; @@ -1819,11 +1862,11 @@ function format_like($cnt,$arr,$type,$id) { if(! function_exists('load_view_file')) { function load_view_file($s) { + global $lang; + if(! isset($lang)) + $lang = 'en'; $b = basename($s); $d = dirname($s); - $lang = get_config('system','language'); - if($lang === false) - $lang = 'en'; if(file_exists("$d/$lang/$b")) return file_get_contents("$d/$lang/$b"); return file_get_contents($s); @@ -1976,7 +2019,7 @@ function contact_block() { intval($shown) ); if(count($r)) { - $o .= '

' . $total . ' ' . t('Contacts') . '

'; + $o .= '

' . sprintf(tt('%d Contact','%d Contacts', $total),$total) . '

'; foreach($r as $rr) { $redirect_url = $a->get_baseurl() . '/redir/' . $rr['id']; if(local_user() && ($rr['uid'] == local_user()) @@ -2373,11 +2416,19 @@ function get_birthdays() { ); if($r && count($r)) { - $o .= '
' . t('Birthdays this week:') . '
'; + $total = 0; + foreach($r as $rr) + if(strlen($rr['name'])) + $total ++; + + $o .= ''; + $o .= '' ; } - $o .= '
'; + $o .= '
'; } return $o; @@ -2417,10 +2468,15 @@ function link_compare($a,$b) { if(! function_exists('prepare_body')) { function prepare_body($item) { + return prepare_text($item['body']); +}} + +if(! function_exists('prepare_text')) { +function prepare_text($text) { require_once('include/bbcode.php'); - $s = smilies(bbcode($item['body'])); + $s = smilies(bbcode($text)); return $s; }} @@ -2584,3 +2640,29 @@ function unamp($s) { return str_replace('&', '&', $s); }} +if(! function_exists('extract_item_authors')) { +function extract_item_authors($arr,$uid) { + + if((! $uid) || (! is_array($arr)) || (! count($arr))) + return array(); + $urls = array(); + foreach($arr as $rr) { + if(! in_array("'" . dbesc($rr['author-link']) . "'",$urls)) + $urls[] = "'" . dbesc($rr['author-link']) . "'"; + } + + // pre-quoted, don't put quotes on %s + if(count($urls)) { + $r = q("SELECT `id`,`url` FROM `contact` WHERE `uid` = %d AND `url` IN ( %s ) AND `network` = 'dfrn' AND `self` = 0 AND `blocked` = 0 ", + intval($uid), + implode(',',$urls) + ); + if(count($r)) { + $ret = array(); + foreach($r as $rr) + $ret[$rr['url']] = $rr['id']; + return $ret; + } + } + return array(); +}}