diff --git a/boot.php b/boot.php index c93b4f517..438c6bb1f 100644 --- a/boot.php +++ b/boot.php @@ -252,7 +252,6 @@ define ( 'NETWORK_PHANTOM', 'unkn'); // Place holder * and existing allocations MUST NEVER BE CHANGED * OR RE-ASSIGNED! You may only add to them. */ - $netgroup_ids = array( NETWORK_DFRN => (-1), NETWORK_ZOT => (-2), @@ -502,6 +501,7 @@ function startup() { */ class App { + /// @TODO decide indending as a colorful mixure is ahead ... public $module_loaded = false; public $query_string; public $config; @@ -559,12 +559,12 @@ class App { * beyond are used. */ public $theme = array( - 'sourcename' => '', - 'videowidth' => 425, - 'videoheight' => 350, + 'sourcename' => '', + 'videowidth' => 425, + 'videoheight' => 350, 'force_max_items' => 0, - 'thread_allow' => true, - 'stylesheet' => '', + 'thread_allow' => true, + 'stylesheet' => '', 'template_engine' => 'smarty3', ); @@ -610,8 +610,9 @@ class App { $hostname = ""; - if (file_exists(".htpreconfig.php")) - @include(".htpreconfig.php"); + if (file_exists(".htpreconfig.php")) { + include ".htpreconfig.php"; + } $this->timezone = ((x($default_timezone)) ? $default_timezone : 'UTC'); @@ -652,79 +653,78 @@ class App { $this->scheme = 'http'; - if((x($_SERVER,'HTTPS') && $_SERVER['HTTPS']) || - (x($_SERVER['HTTP_FORWARDED']) && preg_match("/proto=https/", $_SERVER['HTTP_FORWARDED'])) || - (x($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') || - (x($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') || - (x($_SERVER['FRONT_END_HTTPS']) && $_SERVER['FRONT_END_HTTPS'] == 'on') || - (x($_SERVER,'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443)) // XXX: reasonable assumption, but isn't this hardcoding too much? - ) { - $this->scheme = 'https'; - } - if(x($_SERVER,'SERVER_NAME')) { + if ((x($_SERVER, 'HTTPS') && $_SERVER['HTTPS']) || + (x($_SERVER, 'HTTP_FORWARDED') && preg_match("/proto=https/", $_SERVER['HTTP_FORWARDED'])) || + (x($_SERVER, 'HTTP_X_FORWARDED_PROTO') && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') || + (x($_SERVER, 'HTTP_X_FORWARDED_SSL') && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') || + (x($_SERVER, 'FRONT_END_HTTPS') && $_SERVER['FRONT_END_HTTPS'] == 'on') || + (x($_SERVER, 'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443)) // XXX: reasonable assumption, but isn't this hardcoding too much? + ) { + $this->scheme = 'https'; + } + + if (x($_SERVER, 'SERVER_NAME')) { $this->hostname = $_SERVER['SERVER_NAME']; - if(x($_SERVER,'SERVER_PORT') && $_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) + if (x($_SERVER, 'SERVER_PORT') && $_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) { $this->hostname .= ':' . $_SERVER['SERVER_PORT']; + } /* * Figure out if we are running at the top of a domain * or in a sub-directory and adjust accordingly */ - $path = trim(dirname($_SERVER['SCRIPT_NAME']),'/\\'); - if(isset($path) && strlen($path) && ($path != $this->path)) + /// @TODO This kind of escaping breaks syntax-highlightning on CoolEdit (Midnight Commander) + $path = trim(dirname($_SERVER['SCRIPT_NAME']), '/\\'); + if (isset($path) && strlen($path) && ($path != $this->path)) { $this->path = $path; + } } - if ($hostname != "") + if ($hostname != "") { $this->hostname = $hostname; + } - if (is_array($_SERVER["argv"]) && $_SERVER["argc"]>1 && substr(end($_SERVER["argv"]), 0, 4)=="http" ) { - $this->set_baseurl(array_pop($_SERVER["argv"]) ); + if (is_array($_SERVER["argv"]) && $_SERVER["argc"] > 1 && substr(end($_SERVER["argv"]), 0, 4) == "http" ) { + $this->set_baseurl(array_pop($_SERVER["argv"])); $_SERVER["argc"] --; } - #set_include_path("include/$this->hostname" . PATH_SEPARATOR . get_include_path()); + if ((x($_SERVER, 'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'], 0, 9) === "pagename=") { + $this->query_string = substr($_SERVER['QUERY_STRING'], 9); - if ((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,9) === "pagename=") { - $this->query_string = substr($_SERVER['QUERY_STRING'],9); // removing trailing / - maybe a nginx problem - if (substr($this->query_string, 0, 1) == "/") - $this->query_string = substr($this->query_string, 1); - } elseif ((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,2) === "q=") { - $this->query_string = substr($_SERVER['QUERY_STRING'],2); + $this->query_string = ltrim($this->query_string, '/'); + } elseif ((x($_SERVER, 'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'], 0, 2) === "q=") { + $this->query_string = substr($_SERVER['QUERY_STRING'], 2); + // removing trailing / - maybe a nginx problem - if (substr($this->query_string, 0, 1) == "/") - $this->query_string = substr($this->query_string, 1); + $this->query_string = ltrim($this->query_string, '/'); } - if (x($_GET,'pagename')) { - $this->cmd = trim($_GET['pagename'],'/\\'); - } elseif (x($_GET,'q')) { - $this->cmd = trim($_GET['q'],'/\\'); + if (x($_GET, 'pagename')) { + $this->cmd = trim($_GET['pagename'], '/\\'); + } elseif (x($_GET, 'q')) { + $this->cmd = trim($_GET['q'], '/\\'); } // fix query_string - $this->query_string = str_replace($this->cmd."&",$this->cmd."?", $this->query_string); - + $this->query_string = str_replace($this->cmd . "&", $this->cmd . "?", $this->query_string); // unix style "homedir" - - if (substr($this->cmd,0,1) === '~') { - $this->cmd = 'profile/' . substr($this->cmd,1); + if (substr($this->cmd, 0, 1) === '~') { + $this->cmd = 'profile/' . substr($this->cmd, 1); } // Diaspora style profile url - - if (substr($this->cmd,0,2) === 'u/') { - $this->cmd = 'profile/' . substr($this->cmd,2); + if (substr($this->cmd, 0, 2) === 'u/') { + $this->cmd = 'profile/' . substr($this->cmd, 2); } /* - * * Break the URL path into C style argc/argv style arguments for our * modules. Given "http://example.com/module/arg1/arg2", $this->argc * will be 3 (integer) and $this->argv will contain: @@ -735,16 +735,14 @@ class App { * * There will always be one argument. If provided a naked domain * URL, $this->argv[0] is set to "home". - * */ - $this->argv = explode('/',$this->cmd); + $this->argv = explode('/', $this->cmd); $this->argc = count($this->argv); - if((array_key_exists('0',$this->argv)) && strlen($this->argv[0])) { + if ((array_key_exists('0', $this->argv)) && strlen($this->argv[0])) { $this->module = str_replace(".", "_", $this->argv[0]); $this->module = str_replace("-", "_", $this->module); - } - else { + } else { $this->argc = 1; $this->argv = array('home'); $this->module = 'home'; @@ -755,11 +753,13 @@ class App { * pagination */ - $this->pager['page'] = ((x($_GET,'page') && intval($_GET['page']) > 0) ? intval($_GET['page']) : 1); + $this->pager['page'] = ((x($_GET, 'page') && intval($_GET['page']) > 0) ? intval($_GET['page']) : 1); $this->pager['itemspage'] = 50; $this->pager['start'] = ($this->pager['page'] * $this->pager['itemspage']) - $this->pager['itemspage']; - if($this->pager['start'] < 0) + + if ($this->pager['start'] < 0) { $this->pager['start'] = 0; + } $this->pager['total'] = 0; /* @@ -791,20 +791,23 @@ class App { $basepath = get_config("system", "basepath"); - if ($basepath == "") + if ($basepath == "") { $basepath = dirname(__FILE__); + } - if ($basepath == "") + if ($basepath == "") { $basepath = $_SERVER["DOCUMENT_ROOT"]; + } - if ($basepath == "") + if ($basepath == "") { $basepath = $_SERVER["PWD"]; + } - return($basepath); + return $basepath; } function get_scheme() { - return($this->scheme); + return $this->scheme; } /** @@ -862,7 +865,7 @@ class App { function set_baseurl($url) { $parsed = @parse_url($url); - if($parsed) { + if ($parsed) { $this->scheme = $parsed['scheme']; $hostname = $parsed['host']; @@ -874,7 +877,7 @@ class App { } if (file_exists(".htpreconfig.php")) { - @include(".htpreconfig.php"); + include ".htpreconfig.php"; } if (get_config('config', 'hostname') != '') { @@ -888,8 +891,9 @@ class App { } function get_hostname() { - if (get_config('config','hostname') != "") - $this->hostname = get_config('config','hostname'); + if (get_config('config', 'hostname') != "") { + $this->hostname = get_config('config', 'hostname'); + } return $this->hostname; } @@ -899,7 +903,7 @@ class App { } function set_path($p) { - $this->path = trim(trim($p),'/'); + $this->path = trim(trim($p), '/'); } function get_path() { @@ -924,44 +928,49 @@ class App { $interval = ((local_user()) ? get_pconfig(local_user(),'system','update_interval') : 40000); // If the update is "deactivated" set it to the highest integer number (~24 days) - if ($interval < 0) + if ($interval < 0) { $interval = 2147483647; + } - if($interval < 10000) + if ($interval < 10000) { $interval = 40000; + } // compose the page title from the sitename and the // current module called - if (!$this->module=='') - { - $this->page['title'] = $this->config['sitename'].' ('.$this->module.')'; + if (!$this->module == '') { + $this->page['title'] = $this->config['sitename'] . ' (' . $this->module . ')'; } else { - $this->page['title'] = $this->config['sitename']; + $this->page['title'] = $this->config['sitename']; } /* put the head template at the beginning of page['htmlhead'] * since the code added by the modules frequently depends on it * being first */ - if(!isset($this->page['htmlhead'])) + if (!isset($this->page['htmlhead'])) { $this->page['htmlhead'] = ''; + } // If we're using Smarty, then doing replace_macros() will replace // any unrecognized variables with a blank string. Since we delay // replacing $stylesheet until later, we need to replace it now // with another variable name - if($this->theme['template_engine'] === 'smarty3') + if ($this->theme['template_engine'] === 'smarty3') { $stylesheet = $this->get_template_ldelim('smarty3') . '$stylesheet' . $this->get_template_rdelim('smarty3'); - else + } else { $stylesheet = '$stylesheet'; + } $shortcut_icon = get_config("system", "shortcut_icon"); - if ($shortcut_icon == "") + if ($shortcut_icon == "") { $shortcut_icon = "images/friendica-32.png"; + } $touch_icon = get_config("system", "touch_icon"); - if ($touch_icon == "") + if ($touch_icon == "") { $touch_icon = "images/friendica-128.png"; + } // get data wich is needed for infinite scroll on the network page $invinite_scroll = infinite_scroll_data($this->module); @@ -983,8 +992,9 @@ class App { } function init_page_end() { - if(!isset($this->page['end'])) + if (!isset($this->page['end'])) { $this->page['end'] = ''; + } $tpl = get_markup_template('end.tpl'); $this->page['end'] = replace_macros($tpl,array( '$baseurl' => $this->get_baseurl() // FIXME for z_path!!!! @@ -1017,29 +1027,6 @@ class App { function get_cached_avatar_image($avatar_image){ return $avatar_image; - - // The following code is deactivated. It doesn't seem to make any sense and it slows down the system. - /* - if($this->cached_profile_image[$avatar_image]) - return $this->cached_profile_image[$avatar_image]; - - $path_parts = explode("/",$avatar_image); - $common_filename = $path_parts[count($path_parts)-1]; - - if($this->cached_profile_picdate[$common_filename]){ - $this->cached_profile_image[$avatar_image] = $avatar_image . $this->cached_profile_picdate[$common_filename]; - } else { - $r = q("SELECT `contact`.`avatar-date` AS picdate FROM `contact` WHERE `contact`.`thumb` like '%%/%s'", - $common_filename); - if (! dbm::is_result($r)) { - $this->cached_profile_image[$avatar_image] = $avatar_image; - } else { - $this->cached_profile_picdate[$common_filename] = "?rev=".urlencode($r[0]['picdate']); - $this->cached_profile_image[$avatar_image] = $avatar_image.$this->cached_profile_picdate[$common_filename]; - } - } - return $this->cached_profile_image[$avatar_image]; - */ } @@ -1054,7 +1041,7 @@ class App { // Is the function called statically? if (!(isset($this) && get_class($this) == __CLASS__)) { - return(self::$a->remove_baseurl($orig_url)); + return self::$a->remove_baseurl($orig_url); } // Remove the hostname from the url if it is an internal link @@ -1079,11 +1066,12 @@ class App { * @param string $name */ function register_template_engine($class, $name = '') { - if ($name===""){ + /// @TODO Really === and not just == ? + if ($name === "") { $v = get_class_vars( $class ); - if(x($v,"name")) $name = $v['name']; + if (x($v,"name")) $name = $v['name']; } - if ($name===""){ + if ($name === "") { echo "template engine $class cannot be registered without a name.\n"; killme(); } @@ -1099,8 +1087,9 @@ class App { * @param strin $name Template engine name * @return object Template Engine instance */ - function template_engine($name = ''){ - if ($name!=="") { + function template_engine($name = '') { + /// @TODO really type-check included? + if ($name !== "") { $template_engine = $name; } else { $template_engine = 'smarty3'; @@ -1110,7 +1099,7 @@ class App { } if (isset($this->template_engines[$template_engine])){ - if(isset($this->template_engine_instance[$template_engine])){ + if (isset($this->template_engine_instance[$template_engine])){ return $this->template_engine_instance[$template_engine]; } else { $class = $this->template_engines[$template_engine]; @@ -1134,18 +1123,6 @@ class App { function set_template_engine($engine = 'smarty3') { $this->theme['template_engine'] = $engine; - /* - $this->theme['template_engine'] = 'smarty3'; - - switch($engine) { - case 'smarty3': - if(is_writable('view/smarty3/')) - $this->theme['template_engine'] = 'smarty3'; - break; - default: - break; - } - */ } function get_template_ldelim($engine = 'smarty3') { @@ -1157,8 +1134,9 @@ class App { } function save_timestamp($stamp, $value) { - if (!isset($this->config['system']['profiler']) || !$this->config['system']['profiler']) + if (!isset($this->config['system']['profiler']) || !$this->config['system']['profiler']) { return; + } $duration = (float)(microtime(true)-$stamp); @@ -1240,18 +1218,24 @@ class App { array_shift($trace); $callstack = array(); - foreach ($trace AS $func) + foreach ($trace AS $func) { $callstack[] = $func["function"]; + } return implode(", ", $callstack); } function get_useragent() { - return(FRIENDICA_PLATFORM." '".FRIENDICA_CODENAME."' ".FRIENDICA_VERSION."-".DB_UPDATE_VERSION."; ".$this->get_baseurl()); + return + FRIENDICA_PLATFORM . " '" . + FRIENDICA_CODENAME . "' " . + FRIENDICA_VERSION . "-" . + DB_UPDATE_VERSION . "; " . + $this->get_baseurl(); } function is_friendica_app() { - return($this->is_friendica_app); + return $this->is_friendica_app; } /** @@ -1263,31 +1247,29 @@ class App { * @return bool Is it a known backend? */ function is_backend() { - $backend = array(); - $backend[] = "_well_known"; - $backend[] = "api"; - $backend[] = "dfrn_notify"; - $backend[] = "fetch"; - $backend[] = "hcard"; - $backend[] = "hostxrd"; - $backend[] = "nodeinfo"; - $backend[] = "noscrape"; - $backend[] = "p"; - $backend[] = "poco"; - $backend[] = "post"; - $backend[] = "proxy"; - $backend[] = "pubsub"; - $backend[] = "pubsubhubbub"; - $backend[] = "receive"; - $backend[] = "rsd_xml"; - $backend[] = "salmon"; - $backend[] = "statistics_json"; - $backend[] = "xrd"; + static $backends = array(); + $backends[] = "_well_known"; + $backends[] = "api"; + $backends[] = "dfrn_notify"; + $backends[] = "fetch"; + $backends[] = "hcard"; + $backends[] = "hostxrd"; + $backends[] = "nodeinfo"; + $backends[] = "noscrape"; + $backends[] = "p"; + $backends[] = "poco"; + $backends[] = "post"; + $backends[] = "proxy"; + $backends[] = "pubsub"; + $backends[] = "pubsubhubbub"; + $backends[] = "receive"; + $backends[] = "rsd_xml"; + $backends[] = "salmon"; + $backends[] = "statistics_json"; + $backends[] = "xrd"; - if (in_array($this->module, $backend)) - return(true); - else - return($this->backend); + // Check if current module is in backend or backend flag is set + return (in_array($this->module, $backends) || $this->backend); } /** @@ -1300,13 +1282,15 @@ class App { if ($this->is_backend()) { $process = "backend"; $max_processes = get_config('system', 'max_processes_backend'); - if (intval($max_processes) == 0) + if (intval($max_processes) == 0) { $max_processes = 5; + } } else { $process = "frontend"; $max_processes = get_config('system', 'max_processes_frontend'); - if (intval($max_processes) == 0) + if (intval($max_processes) == 0) { $max_processes = 20; + } } $processlist = dbm::processlist(); @@ -1331,13 +1315,15 @@ class App { if ($this->is_backend()) { $process = "backend"; $maxsysload = intval(get_config('system', 'maxloadavg')); - if ($maxsysload < 1) + if ($maxsysload < 1) { $maxsysload = 50; + } } else { $process = "frontend"; $maxsysload = intval(get_config('system','maxloadavg_frontend')); - if ($maxsysload < 1) + if ($maxsysload < 1) { $maxsysload = 50; + } } $load = current_load(); @@ -1360,11 +1346,11 @@ class App { // This should prevent the forking of masses of workers. $cachekey = "app:proc_run:started"; $result = Cache::get($cachekey); - if (!is_null($result)) { - if ((time() - $result) < 10) { - return; - } + + if (!is_null($result) AND (time() - $result) < 10) { + return; } + // Set the timestamp of the last proc_run Cache::set($cachekey, time(), CACHE_MINUTE); @@ -1373,15 +1359,17 @@ class App { // add baseurl to args. cli scripts can't construct it $args[] = $this->get_baseurl(); - for($x = 0; $x < count($args); $x ++) + for ($x = 0; $x < count($args); $x ++) { $args[$x] = escapeshellarg($args[$x]); + } - $cmdline = implode($args," "); + $cmdline = implode($args, " "); - if(get_config('system','proc_windows')) - proc_close(proc_open('cmd /c start /b ' . $cmdline,array(),$foo,dirname(__FILE__))); - else - proc_close(proc_open($cmdline." &",array(),$foo,dirname(__FILE__))); + if (get_config('system', 'proc_windows')) { + proc_close(proc_open('cmd /c start /b ' . $cmdline, array(), $foo, dirname(__FILE__))); + } else { + proc_close(proc_open($cmdline . " &", array(), $foo, dirname(__FILE__))); + } } @@ -1459,17 +1447,17 @@ function get_app() { * @return bool|int */ function x($s,$k = NULL) { - if($k != NULL) { - if((is_array($s)) && (array_key_exists($k,$s))) { - if($s[$k]) + if ($k != NULL) { + if ((is_array($s)) && (array_key_exists($k, $s))) { + if ($s[$k]) { return (int) 1; + } return (int) 0; - } + } return false; - } - else { - if(isset($s)) { - if($s) { + } else { + if (isset($s)) { + if ($s) { return (int) 1; } return (int) 0; @@ -1497,8 +1485,9 @@ function clean_urls() { function z_path() { $base = App::get_baseurl(); - if(! clean_urls()) + if (! clean_urls()) { $base .= '/?q='; + } return $base; } @@ -1523,8 +1512,9 @@ function z_root() { * @return string */ function absurl($path) { - if(strpos($path,'/') === 0) + if (strpos($path,'/') === 0) { return z_path() . $path; + } return $path; } @@ -1540,12 +1530,13 @@ function is_ajax() { function check_db() { $build = get_config('system','build'); - if(! x($build)) { + if (! x($build)) { set_config('system','build',DB_UPDATE_VERSION); $build = DB_UPDATE_VERSION; } - if($build != DB_UPDATE_VERSION) + if ($build != DB_UPDATE_VERSION) { proc_run(PRIORITY_CRITICAL, 'include/dbupdate.php'); + } } @@ -1564,10 +1555,12 @@ function check_url(App $a) { // and www.example.com vs example.com. // We will only change the url to an ip address if there is no existing setting - if(! x($url)) + if (! x($url)) { $url = set_config('system','url',App::get_baseurl()); - if((! link_compare($url,App::get_baseurl())) && (! preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$a->get_hostname))) + } + if ((! link_compare($url,App::get_baseurl())) && (! preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$a->get_hostname))) { $url = set_config('system','url',App::get_baseurl()); + } return; } @@ -1578,13 +1571,14 @@ function check_url(App $a) { */ function update_db(App $a) { $build = get_config('system','build'); - if(! x($build)) + if (! x($build)) { $build = set_config('system','build',DB_UPDATE_VERSION); + } - if($build != DB_UPDATE_VERSION) { + if ($build != DB_UPDATE_VERSION) { $stored = intval($build); $current = intval(DB_UPDATE_VERSION); - if($stored < $current) { + if ($stored < $current) { Config::load('database'); // We're reporting a different version than what is currently installed. @@ -1594,12 +1588,13 @@ function update_db(App $a) { // updating right this very second and the correct version of the update.php // file may not be here yet. This can happen on a very busy site. - if(DB_UPDATE_VERSION == UPDATE_VERSION) { + if (DB_UPDATE_VERSION == UPDATE_VERSION) { // Compare the current structure with the defined structure $t = get_config('database','dbupdate_'.DB_UPDATE_VERSION); - if($t !== false) + if ($t !== false) { return; + } set_config('database','dbupdate_'.DB_UPDATE_VERSION, time()); @@ -1607,15 +1602,18 @@ function update_db(App $a) { // conflits with new routine) for ($x = $stored; $x < NEW_UPDATE_ROUTINE_VERSION; $x++) { $r = run_update_function($x); - if (!$r) break; + if (!$r) { + break; + } + } + if ($stored < NEW_UPDATE_ROUTINE_VERSION) { + $stored = NEW_UPDATE_ROUTINE_VERSION; } - if ($stored < NEW_UPDATE_ROUTINE_VERSION) $stored = NEW_UPDATE_ROUTINE_VERSION; - // run new update routine // it update the structure in one call $retval = update_structure(false, true); - if($retval) { + if ($retval) { update_fail( DB_UPDATE_VERSION, $retval @@ -1626,9 +1624,11 @@ function update_db(App $a) { } // run any left update_nnnn functions in update.php - for($x = $stored; $x < $current; $x ++) { + for ($x = $stored; $x < $current; $x ++) { $r = run_update_function($x); - if (!$r) break; + if (!$r) { + break; + } } } } @@ -1638,7 +1638,7 @@ function update_db(App $a) { } function run_update_function($x) { - if(function_exists('update_' . $x)) { + if (function_exists('update_' . $x)) { // There could be a lot of processes running or about to run. // We want exactly one process to run the update command. @@ -1649,8 +1649,9 @@ function run_update_function($x) { // delete the config entry to try again. $t = get_config('database','update_' . $x); - if($t !== false) + if ($t !== false) { return false; + } set_config('database','update_' . $x, time()); // call the specific update @@ -1658,7 +1659,7 @@ function run_update_function($x) { $func = 'update_' . $x; $retval = $func(); - if($retval) { + if ($retval) { //send the administrator an e-mail update_fail( $x, @@ -1691,39 +1692,40 @@ function run_update_function($x) { * * @param App $a * - */ + */ function check_plugins(App $a) { $r = q("SELECT * FROM `addon` WHERE `installed` = 1"); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $installed = $r; - else + } else { $installed = array(); + } $plugins = get_config('system','addon'); $plugins_arr = array(); - if($plugins) + if ($plugins) { $plugins_arr = explode(',',str_replace(' ', '',$plugins)); + } $a->plugins = $plugins_arr; $installed_arr = array(); - if(count($installed)) { - foreach($installed as $i) { - if(! in_array($i['name'],$plugins_arr)) { + if (count($installed)) { + foreach ($installed as $i) { + if (! in_array($i['name'],$plugins_arr)) { uninstall_plugin($i['name']); - } - else { + } else { $installed_arr[] = $i['name']; } } } - if(count($plugins_arr)) { - foreach($plugins_arr as $p) { - if(! in_array($p,$installed_arr)) { + if (count($plugins_arr)) { + foreach ($plugins_arr as $p) { + if (! in_array($p,$installed_arr)) { install_plugin($p); } } @@ -1742,8 +1744,9 @@ function get_guid($size=16, $prefix = "") { $prefix = hash("crc32", $a->get_hostname()); } - while (strlen($prefix) < ($size - 13)) + while (strlen($prefix) < ($size - 13)) { $prefix .= mt_rand(); + } if ($size >= 24) { $prefix = substr($prefix, 0, $size - 22); @@ -1783,12 +1786,11 @@ function login($register = false, $hiddens=false) { $dest_url = $a->query_string; - if(local_user()) { + if (local_user()) { $tpl = get_markup_template("logout.tpl"); - } - else { + } else { $a->page['htmlhead'] .= replace_macros(get_markup_template("login_head.tpl"),array( - '$baseurl' => $a->get_baseurl(true) + '$baseurl' => $a->get_baseurl(true) )); $tpl = get_markup_template("login.tpl"); @@ -1798,29 +1800,29 @@ function login($register = false, $hiddens=false) { $o .= replace_macros($tpl, array( - '$dest_url' => $dest_url, - '$logout' => t('Logout'), - '$login' => t('Login'), + '$dest_url' => $dest_url, + '$logout' => t('Logout'), + '$login' => t('Login'), - '$lname' => array('username', t('Nickname or Email: ') , '', ''), - '$lpassword' => array('password', t('Password: '), '', ''), - '$lremember' => array('remember', t('Remember me'), 0, ''), + '$lname' => array('username', t('Nickname or Email: ') , '', ''), + '$lpassword' => array('password', t('Password: '), '', ''), + '$lremember' => array('remember', t('Remember me'), 0, ''), - '$openid' => !$noid, - '$lopenid' => array('openid_url', t('Or login using OpenID: '),'',''), + '$openid' => !$noid, + '$lopenid' => array('openid_url', t('Or login using OpenID: '),'',''), - '$hiddens' => $hiddens, + '$hiddens' => $hiddens, - '$register' => $reg, + '$register' => $reg, '$lostpass' => t('Forgot your password?'), '$lostlink' => t('Password Reset'), - '$tostitle' => t('Website Terms of Service'), - '$toslink' => t('terms of service'), + '$tostitle' => t('Website Terms of Service'), + '$toslink' => t('terms of service'), - '$privacytitle' => t('Website Privacy Policy'), - '$privacylink' => t('privacy policy'), + '$privacytitle' => t('Website Privacy Policy'), + '$privacylink' => t('privacy policy'), )); @@ -1834,18 +1836,20 @@ function login($register = false, $hiddens=false) { */ function killme() { - if (!get_app()->is_backend()) + if (!get_app()->is_backend()) { session_write_close(); + } - exit; + exit(); } /** * @brief Redirect to another URL and terminate this process. */ function goaway($s) { - if (!strstr(normalise_link($s), "http://")) + if (!strstr(normalise_link($s), "http://")) { $s = App::get_baseurl()."/".$s; + } header("Location: $s"); killme(); @@ -1876,11 +1880,11 @@ function public_contact() { if (x($_SESSION, 'my_address')) { // Local user $public_contact_id = intval(get_contact($_SESSION['my_address'], 0)); - } else if (x($_SESSION, 'visitor_home')) { + } elseif (x($_SESSION, 'visitor_home')) { // Remote user $public_contact_id = intval(get_contact($_SESSION['visitor_home'], 0)); } - } else if (!x($_SESSION, 'authenticated')) { + } elseif (!x($_SESSION, 'authenticated')) { $public_contact_id = false; } @@ -1893,8 +1897,9 @@ function public_contact() { * @return int|bool visitor_id or false */ function remote_user() { - if((x($_SESSION,'authenticated')) && (x($_SESSION,'visitor_id'))) + if ((x($_SESSION,'authenticated')) && (x($_SESSION,'visitor_id'))) { return intval($_SESSION['visitor_id']); + } return false; } @@ -1907,9 +1912,12 @@ function remote_user() { */ function notice($s) { $a = get_app(); - if(! x($_SESSION,'sysmsg')) $_SESSION['sysmsg'] = array(); - if($a->interactive) + if (! x($_SESSION,'sysmsg')) { + $_SESSION['sysmsg'] = array(); + } + if ($a->interactive) { $_SESSION['sysmsg'][] = $s; + } } /** @@ -1922,12 +1930,16 @@ function notice($s) { function info($s) { $a = get_app(); - if (local_user() AND get_pconfig(local_user(),'system','ignore_info')) + if (local_user() AND get_pconfig(local_user(),'system','ignore_info')) { return; + } - if(! x($_SESSION,'sysmsg_info')) $_SESSION['sysmsg_info'] = array(); - if($a->interactive) + if (! x($_SESSION,'sysmsg_info')) { + $_SESSION['sysmsg_info'] = array(); + } + if ($a->interactive) { $_SESSION['sysmsg_info'][] = $s; + } } @@ -1989,8 +2001,9 @@ function proc_run($cmd){ $arr = array('args' => $args, 'run_cmd' => true); call_hooks("proc_run", $arr); - if (!$arr['run_cmd'] OR !count($args)) + if (!$arr['run_cmd'] OR !count($args)) { return; + } $priority = PRIORITY_MEDIUM; $dont_fork = get_config("system", "worker_dont_fork"); @@ -2013,12 +2026,13 @@ function proc_run($cmd){ $found = q("SELECT `id` FROM `workerqueue` WHERE `parameter` = '%s'", dbesc($parameters)); - if (!$found) + if (!dbm::is_result($found)) { q("INSERT INTO `workerqueue` (`parameter`, `created`, `priority`) VALUES ('%s', '%s', %d)", dbesc($parameters), dbesc(datetime_convert()), intval($priority)); + } // Should we quit and wait for the poller to be called as a cronjob? if ($dont_fork) { @@ -2031,12 +2045,14 @@ function proc_run($cmd){ // Get number of allowed number of worker threads $queues = intval(get_config("system", "worker_queues")); - if ($queues == 0) + if ($queues == 0) { $queues = 4; + } // If there are already enough workers running, don't fork another one - if ($workers[0]["workers"] >= $queues) + if ($workers[0]["workers"] >= $queues) { return; + } // Now call the poller to execute the jobs that we just added to the queue $args = array("include/poller.php", "no_cron"); @@ -2053,20 +2069,22 @@ function current_theme(){ // Find the theme that belongs to the user whose stuff we are looking at - if($a->profile_uid && ($a->profile_uid != local_user())) { + if ($a->profile_uid && ($a->profile_uid != local_user())) { $r = q("select theme from user where uid = %d limit 1", intval($a->profile_uid) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $page_theme = $r[0]['theme']; + } } // Allow folks to over-rule user themes and always use their own on their own site. // This works only if the user is on the same server - if($page_theme && local_user() && (local_user() != $a->profile_uid)) { - if(get_pconfig(local_user(),'system','always_my_theme')) + if ($page_theme && local_user() && (local_user() != $a->profile_uid)) { + if (get_pconfig(local_user(),'system','always_my_theme')) { $page_theme = null; + } } // $mobile_detect = new Mobile_Detect(); @@ -2087,39 +2105,44 @@ function current_theme(){ } $theme_name = ((isset($_SESSION) && x($_SESSION,'mobile-theme')) ? $_SESSION['mobile-theme'] : $system_theme); - if($theme_name === '---') { + if ($theme_name === '---') { // user has selected to have the mobile theme be the same as the normal one $system_theme = $standard_system_theme; $theme_name = $standard_theme_name; - if($page_theme) + if ($page_theme) { $theme_name = $page_theme; + } } } - } - else { + } else { $system_theme = $standard_system_theme; $theme_name = $standard_theme_name; - if($page_theme) + if ($page_theme) { $theme_name = $page_theme; + } } - if($theme_name && + if ($theme_name && (file_exists('view/theme/' . $theme_name . '/style.css') || - file_exists('view/theme/' . $theme_name . '/style.php'))) + file_exists('view/theme/' . $theme_name . '/style.php'))) { return($theme_name); + } - foreach($app_base_themes as $t) { - if(file_exists('view/theme/' . $t . '/style.css')|| - file_exists('view/theme/' . $t . '/style.php')) + foreach ($app_base_themes as $t) { + if (file_exists('view/theme/' . $t . '/style.css') || + file_exists('view/theme/' . $t . '/style.php')) { return($t); + } } $fallback = array_merge(glob('view/theme/*/style.css'),glob('view/theme/*/style.php')); - if(count($fallback)) + if (count($fallback)) { return (str_replace('view/theme/','', substr($fallback[0],0,-10))); + } + /// @TODO No final return statement? } /** @@ -2135,8 +2158,9 @@ function current_theme_url() { $t = current_theme(); $opts = (($a->profile_uid) ? '?f=&puid=' . $a->profile_uid : ''); - if (file_exists('view/theme/' . $t . '/style.php')) + if (file_exists('view/theme/' . $t . '/style.php')) { return('view/theme/'.$t.'/style.pcss'.$opts); + } return('view/theme/'.$t.'/style.css'); } @@ -2165,8 +2189,9 @@ function feed_birthday($uid,$tz) { $birthday = ''; - if(! strlen($tz)) + if (! strlen($tz)) { $tz = 'UTC'; + } $p = q("SELECT `dob` FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1", intval($uid) @@ -2174,13 +2199,14 @@ function feed_birthday($uid,$tz) { if (dbm::is_result($p)) { $tmp_dob = substr($p[0]['dob'],5); - if(intval($tmp_dob)) { + if (intval($tmp_dob)) { $y = datetime_convert($tz,$tz,'now','Y'); $bd = $y . '-' . $tmp_dob . ' 00:00'; $t_dob = strtotime($bd); $now = strtotime(datetime_convert($tz,$tz,'now')); - if($t_dob < $now) + if ($t_dob < $now) { $bd = $y + 1 . '-' . $tmp_dob . ' 00:00'; + } $birthday = datetime_convert($tz,'UTC',$bd,ATOM_TIME); } } @@ -2199,8 +2225,9 @@ function is_site_admin() { $adminlist = explode(",", str_replace(" ", "", $a->config['admin_email'])); //if(local_user() && x($a->user,'email') && x($a->config,'admin_email') && ($a->user['email'] === $a->config['admin_email'])) - if(local_user() && x($a->user,'email') && x($a->config,'admin_email') && in_array($a->user['email'], $adminlist)) + if (local_user() && x($a->user,'email') && x($a->config,'admin_email') && in_array($a->user['email'], $adminlist)) { return true; + } return false; } @@ -2212,21 +2239,24 @@ function is_site_admin() { * * @return string */ -function build_querystring($params, $name=null) { +function build_querystring($params, $name = null) { $ret = ""; - foreach($params as $key=>$val) { - if(is_array($val)) { - if($name==null) { + foreach ($params as $key => $val) { + if (is_array($val)) { + /// @TODO maybe not compare against null, use is_null() + if ($name == null) { $ret .= build_querystring($val, $key); } else { $ret .= build_querystring($val, $name."[$key]"); } } else { $val = urlencode($val); - if($name!=null) { - $ret.=$name."[$key]"."=$val&"; + /// @TODO maybe not compare against null, use is_null() + if ($name != null) { + /// @TODO two string concated, can be merged to one + $ret .= $name . "[$key]" . "=$val&"; } else { - $ret.= "$key=$val&"; + $ret .= "$key=$val&"; } } } @@ -2235,7 +2265,7 @@ function build_querystring($params, $name=null) { function explode_querystring($query) { $arg_st = strpos($query, '?'); - if($arg_st !== false) { + if ($arg_st !== false) { $base = substr($query, 0, $arg_st); $arg_st += 1; } else { @@ -2244,13 +2274,15 @@ function explode_querystring($query) { } $args = explode('&', substr($query, $arg_st)); - foreach($args as $k=>$arg) { - if($arg === '') + foreach ($args as $k => $arg) { + /// @TODO really compare type-safe here? + if ($arg === '') { unset($args[$k]); + } } $args = array_values($args); - if(!$base) { + if (!$base) { $base = $args[0]; unset($args[0]); $args = array_values($args); @@ -2269,8 +2301,12 @@ function explode_querystring($query) { */ function curPageURL() { $pageURL = 'http'; - if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} + if ($_SERVER["HTTPS"] == "on") { + $pageURL .= "s"; + } + $pageURL .= "://"; + if ($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443") { $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; } else { @@ -2281,7 +2317,8 @@ function curPageURL() { function random_digits($digits) { $rn = ''; - for($i = 0; $i < $digits; $i++) { + for ($i = 0; $i < $digits; $i++) { + /// @TODO rand() is different to mt_rand() and maybe lesser "random" $rn .= rand(0,9); } return $rn; @@ -2290,8 +2327,9 @@ function random_digits($digits) { function get_server() { $server = get_config("system", "directory"); - if ($server == "") + if ($server == "") { $server = "http://dir.friendi.ca"; + } return($server); } @@ -2299,12 +2337,13 @@ function get_server() { function get_cachefile($file, $writemode = true) { $cache = get_itemcachepath(); - if ((! $cache) || (! is_dir($cache))) + if ((! $cache) || (! is_dir($cache))) { return(""); + } - $subfolder = $cache."/".substr($file, 0, 2); + $subfolder = $cache . "/" . substr($file, 0, 2); - $cachepath = $subfolder."/".$file; + $cachepath = $subfolder . "/" . $file; if ($writemode) { if (!is_dir($subfolder)) { @@ -2313,7 +2352,8 @@ function get_cachefile($file, $writemode = true) { } } - return($cachepath); + /// @TODO no need to put braces here + return $cachepath; } function clear_cache($basepath = "", $path = "") { @@ -2322,24 +2362,29 @@ function clear_cache($basepath = "", $path = "") { $path = $basepath; } - if (($path == "") OR (!is_dir($path))) + if (($path == "") OR (!is_dir($path))) { return; + } - if (substr(realpath($path), 0, strlen($basepath)) != $basepath) + if (substr(realpath($path), 0, strlen($basepath)) != $basepath) { return; + } $cachetime = (int)get_config('system','itemcache_duration'); - if ($cachetime == 0) + if ($cachetime == 0) { $cachetime = 86400; + } if (is_writable($path)){ if ($dh = opendir($path)) { while (($file = readdir($dh)) !== false) { $fullpath = $path."/".$file; - if ((filetype($fullpath) == "dir") and ($file != ".") and ($file != "..")) + if ((filetype($fullpath) == "dir") and ($file != ".") and ($file != "..")) { clear_cache($basepath, $fullpath); - if ((filetype($fullpath) == "file") and (filectime($fullpath) < (time() - $cachetime))) + } + if ((filetype($fullpath) == "file") and (filectime($fullpath) < (time() - $cachetime))) { unlink($fullpath); + } } closedir($dh); } @@ -2349,8 +2394,9 @@ function clear_cache($basepath = "", $path = "") { function get_itemcachepath() { // Checking, if the cache is deactivated $cachetime = (int)get_config('system','itemcache_duration'); - if ($cachetime < 0) + if ($cachetime < 0) { return ""; + } $itemcache = get_config('system','itemcache'); if (($itemcache != "") AND App::directory_usable($itemcache)) { @@ -2361,7 +2407,7 @@ function get_itemcachepath() { if ($temppath != "") { $itemcache = $temppath."/itemcache"; - if(!file_exists($itemcache) && !is_dir($itemcache)) { + if (!file_exists($itemcache) && !is_dir($itemcache)) { mkdir($itemcache); } @@ -2427,8 +2473,10 @@ function get_temppath() { if (($temppath != "") AND App::directory_usable($temppath)) { // To avoid any interferences with other systems we create our own directory $new_temppath .= "/".$a->get_hostname(); - if (!is_dir($new_temppath)) + if (!is_dir($new_temppath)) { + /// @TODO There is a mkdir()+chmod() upwards, maybe generalize this (+ configurable) into a function/method? mkdir($new_temppath); + } if (App::directory_usable($new_temppath)) { // The new path is usable, we are happy @@ -2449,14 +2497,15 @@ function get_temppath() { function set_template_engine(App $a, $engine = 'internal') { /// @note This function is no longer necessary, but keep it as a wrapper to the class method /// to avoid breaking themes again unnecessarily +/// @TODO maybe output a warning here so the theme developer can see it? PHP won't show such warnings like Java does. $a->set_template_engine($engine); } -if(!function_exists('exif_imagetype')) { +if (!function_exists('exif_imagetype')) { function exif_imagetype($file) { $size = getimagesize($file); - return($size[2]); + return $size[2]; } } @@ -2465,37 +2514,42 @@ function validate_include(&$file) { $file = realpath($file); - if (strpos($file, getcwd()) !== 0) + if (strpos($file, getcwd()) !== 0) { return false; + } $file = str_replace(getcwd()."/", "", $file, $count); - if ($count != 1) + if ($count != 1) { return false; + } - if ($orig_file !== $file) + if ($orig_file !== $file) { return false; + } $valid = false; - if (strpos($file, "include/") === 0) + if (strpos($file, "include/") === 0) { $valid = true; + } - if (strpos($file, "addon/") === 0) + if (strpos($file, "addon/") === 0) { $valid = true; + } - if (!$valid) - return false; - - return true; + // Simply return flag + return ($valid); } function current_load() { - if (!function_exists('sys_getloadavg')) + if (!function_exists('sys_getloadavg')) { return false; + } $load_arr = sys_getloadavg(); - if (!is_array($load_arr)) + if (!is_array($load_arr)) { return false; + } return max($load_arr[0], $load_arr[1]); } @@ -2516,8 +2570,9 @@ function argc() { * @return string Value of the argv key */ function argv($x) { - if(array_key_exists($x,get_app()->argv)) + if (array_key_exists($x,get_app()->argv)) { return get_app()->argv[$x]; + } return ''; } @@ -2541,20 +2596,24 @@ function infinite_scroll_data($module) { AND ($module == "network") AND ($_GET["mode"] != "minimal")) { // get the page number - if (is_string($_GET["page"])) + if (is_string($_GET["page"])) { $pageno = $_GET["page"]; - else + } else { $pageno = 1; + } $reload_uri = ""; // try to get the uri from which we load the content - foreach ($_GET AS $param => $value) - if (($param != "page") AND ($param != "q")) - $reload_uri .= "&".$param."=".urlencode($value); + foreach ($_GET AS $param => $value) { + if (($param != "page") AND ($param != "q")) { + $reload_uri .= "&" . $param . "=" . urlencode($value); + } + } - if (($a->page_offset != "") AND !strstr($reload_uri, "&offset=")) - $reload_uri .= "&offset=".urlencode($a->page_offset); + if (($a->page_offset != "") AND !strstr($reload_uri, "&offset=")) { + $reload_uri .= "&offset=" . urlencode($a->page_offset); + } $arr = array("pageno" => $pageno, "reload_uri" => $reload_uri); diff --git a/include/dfrn.php b/include/dfrn.php index 4002bb426..aae935963 100644 --- a/include/dfrn.php +++ b/include/dfrn.php @@ -41,6 +41,7 @@ class dfrn { * @param array $owner Owner record * * @return string DFRN entries + * @todo Add type-hints */ public static function entries($items,$owner) { @@ -49,10 +50,11 @@ class dfrn { $root = self::add_header($doc, $owner, "dfrn:owner", "", false); - if(! count($items)) + if (! count($items)) { return trim($doc->saveXML()); + } - foreach($items as $item) { + foreach ($items as $item) { $entry = self::entry($doc, "text", $item, $owner, $item["entry:comment-allow"], $item["entry:cid"]); $root->appendChild($entry); } @@ -82,14 +84,17 @@ class dfrn { $starred = false; // not yet implemented, possible security issues $converse = false; - if($public_feed && $a->argc > 2) { - for($x = 2; $x < $a->argc; $x++) { - if($a->argv[$x] == 'converse') + if ($public_feed && $a->argc > 2) { + for ($x = 2; $x < $a->argc; $x++) { + if ($a->argv[$x] == 'converse') { $converse = true; - if($a->argv[$x] == 'starred') + } + if ($a->argv[$x] == 'starred') { $starred = true; - if($a->argv[$x] == 'category' && $a->argc > ($x + 1) && strlen($a->argv[$x+1])) + } + if ($a->argv[$x] == 'category' && $a->argc > ($x + 1) && strlen($a->argv[$x+1])) { $category = $a->argv[$x+1]; + } } } @@ -115,7 +120,7 @@ class dfrn { $sql_post_table = ""; - if(! $public_feed) { + if (! $public_feed) { $sql_extra = ''; switch($direction) { @@ -148,12 +153,13 @@ class dfrn { require_once('include/security.php'); $groups = init_groups_visitor($contact['id']); - if(count($groups)) { - for($x = 0; $x < count($groups); $x ++) + if (count($groups)) { + for ($x = 0; $x < count($groups); $x ++) $groups[$x] = '<' . intval($groups[$x]) . '>' ; $gs = implode('|', $groups); - } else + } else { $gs = '<<>>' ; // Impossible to match + } $sql_extra = sprintf(" AND ( `allow_cid` = '' OR `allow_cid` REGEXP '<%d>' ) @@ -168,23 +174,26 @@ class dfrn { ); } - if($public_feed) + if ($public_feed) { $sort = 'DESC'; - else + } else { $sort = 'ASC'; + } - if(! strlen($last_update)) + if (! strlen($last_update)) { $last_update = 'now -30 days'; + } - if(isset($category)) { + if (isset($category)) { $sql_post_table = sprintf("INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ", dbesc(protect_sprintf($category)), intval(TERM_OBJ_POST), intval(TERM_CATEGORY), intval($owner_id)); //$sql_extra .= file_tag_file_query('item',$category,'category'); } - if($public_feed) { - if(! $converse) + if ($public_feed) { + if (! $converse) { $sql_extra .= " AND `contact`.`self` = 1 "; + } } $check_date = datetime_convert('UTC','UTC',$last_update,'Y-m-d H:i:s'); @@ -207,8 +216,10 @@ class dfrn { dbesc($sort) ); - // Will check further below if this actually returned results. - // We will provide an empty feed if that is the case. + /* + * Will check further below if this actually returned results. + * We will provide an empty feed if that is the case. + */ $items = $r; @@ -217,20 +228,22 @@ class dfrn { $alternatelink = $owner['url']; - if(isset($category)) + if (isset($category)) { $alternatelink .= "/category/".$category; + } - if ($public_feed) + if ($public_feed) { $author = "dfrn:owner"; - else + } else { $author = "author"; + } $root = self::add_header($doc, $owner, $author, $alternatelink, true); - // This hook can't work anymore + /// @TODO This hook can't work anymore // call_hooks('atom_feed', $atom); - if (!count($items) OR $onlyheader) { + if (!dbm::is_result($items) OR $onlyheader) { $atom = trim($doc->saveXML()); call_hooks('atom_feed_end', $atom); @@ -238,21 +251,24 @@ class dfrn { return $atom; } - foreach($items as $item) { + foreach ($items as $item) { // prevent private email from leaking. - if($item['network'] == NETWORK_MAIL) + if ($item['network'] == NETWORK_MAIL) { continue; + } // public feeds get html, our own nodes use bbcode - if($public_feed) { + if ($public_feed) { $type = 'html'; // catch any email that's in a public conversation and make sure it doesn't leak - if($item['private']) + if ($item['private']) { continue; - } else + } + } else { $type = 'text'; + } $entry = self::entry($doc, $type, $item, $owner, true); $root->appendChild($entry); @@ -273,6 +289,7 @@ class dfrn { * @param array $owner Owner record * * @return string DFRN mail + * @todo Add type-hints */ public static function mail($item, $owner) { $doc = new DOMDocument('1.0', 'utf-8'); @@ -307,6 +324,7 @@ class dfrn { * @param array $owner Owner record * * @return string DFRN suggestions + * @todo Add type-hints */ public static function fsuggest($item, $owner) { $doc = new DOMDocument('1.0', 'utf-8'); @@ -334,12 +352,13 @@ class dfrn { * @param int $uid User ID * * @return string DFRN relocations + * @todo Add type-hints */ public static function relocate($owner, $uid) { /* get site pubkey. this could be a new installation with no site keys*/ $pubkey = get_config('system','site_pubkey'); - if(! $pubkey) { + if (! $pubkey) { $res = new_keypair(1024); set_config('system','site_prvkey', $res['prvkey']); set_config('system','site_pubkey', $res['pubkey']); @@ -350,8 +369,9 @@ class dfrn { $photos = array(); $ext = Photo::supportedTypes(); - foreach($rp as $p) + foreach ($rp as $p) { $photos[$p['scale']] = app::get_baseurl().'/photo/'.$p['resource-id'].'-'.$p['scale'].'.'.$ext[$p['type']]; + } unset($rp, $ext); @@ -390,11 +410,13 @@ class dfrn { * @param bool $public Is it a header for public posts? * * @return object XML root object + * @todo Add type-hints */ private static function add_header($doc, $owner, $authorelement, $alternatelink = "", $public = false) { - if ($alternatelink == "") + if ($alternatelink == "") { $alternatelink = $owner['url']; + } $root = $doc->createElementNS(NAMESPACE_ATOM1, 'feed'); $doc->appendChild($root); @@ -437,8 +459,9 @@ class dfrn { } // For backward compatibility we keep this element - if ($owner['page-flags'] == PAGE_COMMUNITY) + if ($owner['page-flags'] == PAGE_COMMUNITY) { xml::add_element($doc, $root, "dfrn:community", 1); + } // The former element is replaced by this one xml::add_element($doc, $root, "dfrn:account_type", $owner["account-type"]); @@ -461,6 +484,7 @@ class dfrn { * @param string $authorelement Element name for the author * * @return object XML author object + * @todo Add type-hints */ private static function add_author($doc, $owner, $authorelement, $public) { @@ -468,10 +492,11 @@ class dfrn { $r = q("SELECT `id` FROM `profile` INNER JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE (`hidewall` OR NOT `net-publish`) AND `user`.`uid` = %d", intval($owner['uid'])); - if ($r) + if (dbm::is_result($r)) { $hidewall = true; - else + } else { $hidewall = false; + } $author = $doc->createElement($authorelement); @@ -479,10 +504,11 @@ class dfrn { $uridate = datetime_convert('UTC', 'UTC', $owner['uri-date'].'+00:00', ATOM_TIME); $picdate = datetime_convert('UTC', 'UTC', $owner['avatar-date'].'+00:00', ATOM_TIME); - if (!$public OR !$hidewall) + $attributes = array(); + + if (!$public OR !$hidewall) { $attributes = array("dfrn:updated" => $namdate); - else - $attributes = array(); + } xml::add_element($doc, $author, "name", $owner["name"], $attributes); xml::add_element($doc, $author, "uri", app::get_baseurl().'/profile/'.$owner["nickname"], $attributes); @@ -491,20 +517,23 @@ class dfrn { $attributes = array("rel" => "photo", "type" => "image/jpeg", "media:width" => 175, "media:height" => 175, "href" => $owner['photo']); - if (!$public OR !$hidewall) + if (!$public OR !$hidewall) { $attributes["dfrn:updated"] = $picdate; + } xml::add_element($doc, $author, "link", "", $attributes); $attributes["rel"] = "avatar"; xml::add_element($doc, $author, "link", "", $attributes); - if ($hidewall) + if ($hidewall) { xml::add_element($doc, $author, "dfrn:hide", "true"); + } // The following fields will only be generated if the data isn't meant for a public feed - if ($public) + if ($public) { return $author; + } $birthday = feed_birthday($owner['uid'], $owner['timezone']); @@ -519,7 +548,7 @@ class dfrn { INNER JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `profile`.`is-default` AND NOT `user`.`hidewall` AND `user`.`uid` = %d", intval($owner['uid'])); - if ($r) { + if (dbm::is_result($r)) { $profile = $r[0]; xml::add_element($doc, $author, "poco:displayName", $profile["name"]); @@ -547,8 +576,9 @@ class dfrn { if (trim($profile["pub_keywords"]) != "") { $keywords = explode(",", $profile["pub_keywords"]); - foreach ($keywords AS $keyword) + foreach ($keywords AS $keyword) { xml::add_element($doc, $author, "poco:tags", trim($keyword)); + } } @@ -565,14 +595,17 @@ class dfrn { xml::add_element($doc, $element, "poco:formatted", formatted_location($profile)); - if (trim($profile["locality"]) != "") + if (trim($profile["locality"]) != "") { xml::add_element($doc, $element, "poco:locality", $profile["locality"]); + } - if (trim($profile["region"]) != "") + if (trim($profile["region"]) != "") { xml::add_element($doc, $element, "poco:region", $profile["region"]); + } - if (trim($profile["country-name"]) != "") + if (trim($profile["country-name"]) != "") { xml::add_element($doc, $element, "poco:country", $profile["country-name"]); + } $author->appendChild($element); } @@ -590,6 +623,7 @@ class dfrn { * @param array $items Item elements * * @return object XML author object + * @todo Add type-hints */ private static function add_entry_author($doc, $element, $contact_url, $item) { @@ -630,35 +664,43 @@ class dfrn { * @param string $activity activity value * * @return object XML activity object + * @todo Add type-hints */ private static function create_activity($doc, $element, $activity) { - if($activity) { + if ($activity) { $entry = $doc->createElement($element); $r = parse_xml_string($activity, false); - if(!$r) + if (!$r) { return false; - if($r->type) + } + if ($r->type) { xml::add_element($doc, $entry, "activity:object-type", $r->type); - if($r->id) + } + if ($r->id) { xml::add_element($doc, $entry, "id", $r->id); - if($r->title) + } + if ($r->title) { xml::add_element($doc, $entry, "title", $r->title); - if($r->link) { - if(substr($r->link,0,1) == '<') { - if(strstr($r->link,'&') && (! strstr($r->link,'&'))) - $r->link = str_replace('&','&', $r->link); + } - $r->link = preg_replace('/\/','',$r->link); + if ($r->link) { + if (substr($r->link, 0, 1) == '<') { + if (strstr($r->link, '&') && (! strstr($r->link, '&'))) { + $r->link = str_replace('&', '&', $r->link); + } + + $r->link = preg_replace('/\/', '', $r->link); // XML does need a single element as root element so we add a dummy element here - $data = parse_xml_string("".$r->link."", false); + $data = parse_xml_string("" . $r->link . "", false); if (is_object($data)) { foreach ($data->link AS $link) { $attributes = array(); - foreach ($link->attributes() AS $parameter => $value) + foreach ($link->attributes() AS $parameter => $value) { $attributes[$parameter] = $value; + } xml::add_element($doc, $entry, "link", "", $attributes); } } @@ -667,8 +709,9 @@ class dfrn { xml::add_element($doc, $entry, "link", "", $attributes); } } - if($r->content) + if ($r->content) { xml::add_element($doc, $entry, "content", bbcode($r->content), array("type" => "html")); + } return $entry; } @@ -684,23 +727,26 @@ class dfrn { * @param array $item Item element * * @return object XML attachment object + * @todo Add type-hints */ private static function get_attachment($doc, $root, $item) { $arr = explode('[/attach],',$item['attach']); - if(count($arr)) { - foreach($arr as $r) { + if (count($arr)) { + foreach ($arr as $r) { $matches = false; $cnt = preg_match('|\[attach\]href=\"(.*?)\" length=\"(.*?)\" type=\"(.*?)\" title=\"(.*?)\"|',$r,$matches); - if($cnt) { + if ($cnt) { $attributes = array("rel" => "enclosure", "href" => $matches[1], "type" => $matches[3]); - if(intval($matches[2])) + if (intval($matches[2])) { $attributes["length"] = intval($matches[2]); + } - if(trim($matches[4]) != "") + if (trim($matches[4]) != "") { $attributes["title"] = trim($matches[4]); + } xml::add_element($doc, $root, "link", "", $attributes); } @@ -719,25 +765,28 @@ class dfrn { * @param int $cid Contact ID of the recipient * * @return object XML entry object + * @todo Add type-hints */ private static function entry($doc, $type, $item, $owner, $comment = false, $cid = 0) { $mentioned = array(); - if(!$item['parent']) + if (!$item['parent']) { return; + } - if($item['deleted']) { + if ($item['deleted']) { $attributes = array("ref" => $item['uri'], "when" => datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)); return xml::create_element($doc, "at:deleted-entry", "", $attributes); } $entry = $doc->createElement("entry"); - if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid']) + if ($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid']) { $body = fix_private_photos($item['body'],$owner['uid'],$item,$cid); - else + } else { $body = $item['body']; + } // Remove the abstract element. It is only locally important. $body = remove_abstract($body); @@ -745,8 +794,9 @@ class dfrn { if ($type == 'html') { $htmlbody = $body; - if ($item['title'] != "") + if ($item['title'] != "") { $htmlbody = "[b]".$item['title']."[/b]\n\n".$htmlbody; + } $htmlbody = bbcode($htmlbody, false, false, 7); } @@ -757,7 +807,7 @@ class dfrn { $dfrnowner = self::add_entry_author($doc, "dfrn:owner", $item["owner-link"], $item); $entry->appendChild($dfrnowner); - if(($item['parent'] != $item['id']) || ($item['parent-uri'] !== $item['uri']) || (($item['thr-parent'] !== '') && ($item['thr-parent'] !== $item['uri']))) { + if (($item['parent'] != $item['id']) || ($item['parent-uri'] !== $item['uri']) || (($item['thr-parent'] !== '') && ($item['thr-parent'] !== $item['uri']))) { $parent = q("SELECT `guid` FROM `item` WHERE `id` = %d", intval($item["parent"])); $parent_item = (($item['thr-parent']) ? $item['thr-parent'] : $item['parent-uri']); $attributes = array("ref" => $parent_item, "type" => "text/html", @@ -785,26 +835,33 @@ class dfrn { // "comment-allow" is some old fashioned stuff for old Friendica versions. // It is included in the rewritten code for completeness - if ($comment) + if ($comment) { xml::add_element($doc, $entry, "dfrn:comment-allow", intval($item['last-child'])); + } - if($item['location']) + if ($item['location']) { xml::add_element($doc, $entry, "dfrn:location", $item['location']); + } - if($item['coord']) + if ($item['coord']) { xml::add_element($doc, $entry, "georss:point", $item['coord']); + } - if(($item['private']) || strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])) + if (($item['private']) || strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])) { xml::add_element($doc, $entry, "dfrn:private", (($item['private']) ? $item['private'] : 1)); + } - if($item['extid']) + if ($item['extid']) { xml::add_element($doc, $entry, "dfrn:extid", $item['extid']); + } - if($item['bookmark']) + if ($item['bookmark']) { xml::add_element($doc, $entry, "dfrn:bookmark", "true"); + } - if($item['app']) + if ($item['app']) { xml::add_element($doc, $entry, "statusnet:notice_info", "", array("local_id" => $item['id'], "source" => $item['app'])); + } xml::add_element($doc, $entry, "dfrn:diaspora_guid", $item["guid"]); @@ -817,46 +874,56 @@ class dfrn { xml::add_element($doc, $entry, "activity:verb", construct_verb($item)); - if ($item['object-type'] != "") + if ($item['object-type'] != "") { xml::add_element($doc, $entry, "activity:object-type", $item['object-type']); - elseif ($item['id'] == $item['parent']) + } elseif ($item['id'] == $item['parent']) { xml::add_element($doc, $entry, "activity:object-type", ACTIVITY_OBJ_NOTE); - else + } else { xml::add_element($doc, $entry, "activity:object-type", ACTIVITY_OBJ_COMMENT); + } $actobj = self::create_activity($doc, "activity:object", $item['object']); - if ($actobj) + if ($actobj) { $entry->appendChild($actobj); + } $actarg = self::create_activity($doc, "activity:target", $item['target']); - if ($actarg) + if ($actarg) { $entry->appendChild($actarg); + } $tags = item_getfeedtags($item); - if(count($tags)) { - foreach($tags as $t) - if (($type != 'html') OR ($t[0] != "@")) + if (count($tags)) { + foreach ($tags as $t) { + if (($type != 'html') OR ($t[0] != "@")) { xml::add_element($doc, $entry, "category", "", array("scheme" => "X-DFRN:".$t[0].":".$t[1], "term" => $t[2])); + } + } } - if(count($tags)) - foreach($tags as $t) - if ($t[0] == "@") + if (count($tags)) { + foreach ($tags as $t) { + if ($t[0] == "@") { $mentioned[$t[1]] = $t[1]; + } + } + } foreach ($mentioned AS $mention) { $r = q("SELECT `forum`, `prv` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s'", intval($owner["uid"]), dbesc(normalise_link($mention))); - if ($r[0]["forum"] OR $r[0]["prv"]) + + if (dbm::is_result($r) AND ($r[0]["forum"] OR $r[0]["prv"])) { xml::add_element($doc, $entry, "link", "", array("rel" => "mentioned", "ostatus:object-type" => ACTIVITY_OBJ_GROUP, "href" => $mention)); - else + } else { xml::add_element($doc, $entry, "link", "", array("rel" => "mentioned", "ostatus:object-type" => ACTIVITY_OBJ_PERSON, "href" => $mention)); + } } self::get_attachment($doc, $entry, $item); @@ -897,6 +964,7 @@ class dfrn { * @param bool $dissolve (to be documented) * * @return int Deliver status. -1 means an error. + * @todo Add array type-hint for $owner, $contact */ public static function deliver($owner,$contact,$atom, $dissolve = false) { @@ -904,13 +972,14 @@ class dfrn { $idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']); - if($contact['duplex'] && $contact['dfrn-id']) + if ($contact['duplex'] && $contact['dfrn-id']) { $idtosend = '0:' . $orig_id; - if($contact['duplex'] && $contact['issued-id']) + } + if ($contact['duplex'] && $contact['issued-id']) { $idtosend = '1:' . $orig_id; + } - - $rino = get_config('system','rino_encrypt'); + $rino = get_config('system', 'rino_encrypt'); $rino = intval($rino); logger("Local rino version: ". $rino, LOGGER_DEBUG); @@ -918,7 +987,7 @@ class dfrn { $ssl_val = intval(get_config('system','ssl_policy')); $ssl_policy = ''; - switch($ssl_val){ + switch ($ssl_val) { case SSL_POLICY_FULL: $ssl_policy = 'full'; break; @@ -950,10 +1019,11 @@ class dfrn { logger('dfrn_deliver: ' . $xml, LOGGER_DATA); - if(! $xml) + if (! $xml) { return 3; + } - if(strpos($xml,'status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id))) + if ((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id))) { return (($res->status) ? $res->status : 3); + } $postvars = array(); $sent_dfrn_id = hex2bin((string) $res->dfrn_id); @@ -974,13 +1045,14 @@ class dfrn { logger("Remote rino version: ".$rino_remote_version." for ".$contact["url"], LOGGER_DEBUG); - if($owner['page-flags'] == PAGE_PRVGROUP) + if ($owner['page-flags'] == PAGE_PRVGROUP) { $page = 2; + } $final_dfrn_id = ''; - if($perm) { - if((($perm == 'rw') && (! intval($contact['writable']))) + if ($perm) { + if ((($perm == 'rw') && (! intval($contact['writable']))) || (($perm == 'r') && (intval($contact['writable'])))) { q("update contact set writable = %d where id = %d", intval(($perm == 'rw') ? 1 : 0), @@ -990,7 +1062,7 @@ class dfrn { } } - if(($contact['duplex'] && strlen($contact['pubkey'])) + if (($contact['duplex'] && strlen($contact['pubkey'])) || ($owner['page-flags'] == PAGE_COMMUNITY && strlen($contact['pubkey'])) || ($contact['rel'] == CONTACT_IS_SHARING && strlen($contact['pubkey']))) { openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['pubkey']); @@ -1002,10 +1074,11 @@ class dfrn { $final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.')); - if(strpos($final_dfrn_id,':') == 1) + if (strpos($final_dfrn_id,':') == 1) { $final_dfrn_id = substr($final_dfrn_id,2); + } - if($final_dfrn_id != $orig_id) { + if ($final_dfrn_id != $orig_id) { logger('dfrn_deliver: wrong dfrn_id.'); // did not decode properly - cannot trust this site return 3; @@ -1013,11 +1086,12 @@ class dfrn { $postvars['dfrn_id'] = $idtosend; $postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION; - if($dissolve) + if ($dissolve) { $postvars['dissolve'] = '1'; + } - if((($contact['rel']) && ($contact['rel'] != CONTACT_IS_SHARING) && (! $contact['blocked'])) || ($owner['page-flags'] == PAGE_COMMUNITY)) { + if ((($contact['rel']) && ($contact['rel'] != CONTACT_IS_SHARING) && (! $contact['blocked'])) || ($owner['page-flags'] == PAGE_COMMUNITY)) { $postvars['data'] = $atom; $postvars['perm'] = 'rw'; } else { @@ -1027,14 +1101,15 @@ class dfrn { $postvars['ssl_policy'] = $ssl_policy; - if($page) + if ($page) { $postvars['page'] = $page; + } - if($rino>0 && $rino_remote_version>0 && (! $dissolve)) { + if ($rino > 0 && $rino_remote_version > 0 && (! $dissolve)) { logger('rino version: '. $rino_remote_version); - switch($rino_remote_version) { + switch ($rino_remote_version) { case 1: // Deprecated rino version! $key = openssl_random_pseudo_bytes(16); @@ -1069,23 +1144,24 @@ class dfrn { $postvars['rino'] = $rino_remote_version; $postvars['data'] = bin2hex($data); - #logger('rino: sent key = ' . $key, LOGGER_DEBUG); + //logger('rino: sent key = ' . $key, LOGGER_DEBUG); - if($dfrn_version >= 2.1) { - if(($contact['duplex'] && strlen($contact['pubkey'])) - || ($owner['page-flags'] == PAGE_COMMUNITY && strlen($contact['pubkey'])) - || ($contact['rel'] == CONTACT_IS_SHARING && strlen($contact['pubkey']))) - + if ($dfrn_version >= 2.1) { + if (($contact['duplex'] && strlen($contact['pubkey'])) + || ($owner['page-flags'] == PAGE_COMMUNITY && strlen($contact['pubkey'])) + || ($contact['rel'] == CONTACT_IS_SHARING && strlen($contact['pubkey']))) { openssl_public_encrypt($key,$postvars['key'],$contact['pubkey']); - else + } else { openssl_private_encrypt($key,$postvars['key'],$contact['prvkey']); + } } else { - if(($contact['duplex'] && strlen($contact['prvkey'])) || ($owner['page-flags'] == PAGE_COMMUNITY)) + if (($contact['duplex'] && strlen($contact['prvkey'])) || ($owner['page-flags'] == PAGE_COMMUNITY)) { openssl_private_encrypt($key,$postvars['key'],$contact['prvkey']); - else + } else { openssl_public_encrypt($key,$postvars['key'],$contact['pubkey']); + } } @@ -1110,7 +1186,7 @@ class dfrn { return -10; } - if(strpos($xml,'query($element."/atom:link[@rel='avatar']", $context); - foreach($avatars AS $avatar) { + foreach ($avatars AS $avatar) { $href = ""; $width = 0; - foreach($avatar->attributes AS $attributes) { - if ($attributes->name == "href") + foreach ($avatar->attributes AS $attributes) { + /// @TODO Rewrite these similar if() to one switch + if ($attributes->name == "href") { $href = $attributes->textContent; - if ($attributes->name == "width") + } + if ($attributes->name == "width") { $width = $attributes->textContent; - if ($attributes->name == "updated") + } + if ($attributes->name == "updated") { $contact["avatar-date"] = $attributes->textContent; + } } - if (($width > 0) AND ($href != "")) + if (($width > 0) AND ($href != "")) { $avatarlist[$width] = $href; + } } if (count($avatarlist) > 0) { krsort($avatarlist); $author["avatar"] = current($avatarlist); } - if ($r AND !$onlyfetch) { - logger("Check if contact details for contact ".$r[0]["id"]." (".$r[0]["nick"].") have to be updated.", LOGGER_DEBUG); + if (dbm::is_result($r) AND !$onlyfetch) { + logger("Check if contact details for contact " . $r[0]["id"] . " (" . $r[0]["nick"] . ") have to be updated.", LOGGER_DEBUG); $poco = array("url" => $contact["url"]); // When was the last change to name or uri? - $name_element = $xpath->query($element."/atom:name", $context)->item(0); - foreach($name_element->attributes AS $attributes) - if ($attributes->name == "updated") + $name_element = $xpath->query($element . "/atom:name", $context)->item(0); + foreach ($name_element->attributes AS $attributes) { + if ($attributes->name == "updated") { $poco["name-date"] = $attributes->textContent; + } + } - $link_element = $xpath->query($element."/atom:link", $context)->item(0); - foreach($link_element->attributes AS $attributes) - if ($attributes->name == "updated") + $link_element = $xpath->query($element . "/atom:link", $context)->item(0); + foreach ($link_element->attributes AS $attributes) { + if ($attributes->name == "updated") { $poco["uri-date"] = $attributes->textContent; + } + } // Update contact data - $value = $xpath->evaluate($element."/dfrn:handle/text()", $context)->item(0)->nodeValue; - if ($value != "") + $value = $xpath->evaluate($element . "/dfrn:handle/text()", $context)->item(0)->nodeValue; + if ($value != "") { $poco["addr"] = $value; + } - $value = $xpath->evaluate($element."/poco:displayName/text()", $context)->item(0)->nodeValue; - if ($value != "") + $value = $xpath->evaluate($element . "/poco:displayName/text()", $context)->item(0)->nodeValue; + if ($value != "") { $poco["name"] = $value; + } - $value = $xpath->evaluate($element."/poco:preferredUsername/text()", $context)->item(0)->nodeValue; - if ($value != "") + $value = $xpath->evaluate($element . "/poco:preferredUsername/text()", $context)->item(0)->nodeValue; + if ($value != "") { $poco["nick"] = $value; + } - $value = $xpath->evaluate($element."/poco:note/text()", $context)->item(0)->nodeValue; - if ($value != "") + $value = $xpath->evaluate($element . "/poco:note/text()", $context)->item(0)->nodeValue; + if ($value != "") { $poco["about"] = $value; + } - $value = $xpath->evaluate($element."/poco:address/poco:formatted/text()", $context)->item(0)->nodeValue; - if ($value != "") + $value = $xpath->evaluate($element . "/poco:address/poco:formatted/text()", $context)->item(0)->nodeValue; + if ($value != "") { $poco["location"] = $value; + } /// @todo Only search for elements with "poco:type" = "xmpp" - $value = $xpath->evaluate($element."/poco:ims/poco:value/text()", $context)->item(0)->nodeValue; - if ($value != "") + $value = $xpath->evaluate($element . "/poco:ims/poco:value/text()", $context)->item(0)->nodeValue; + if ($value != "") { $poco["xmpp"] = $value; + } /// @todo Add support for the following fields that we don't support by now in the contact table: /// - poco:utcOffset @@ -1273,28 +1367,31 @@ class dfrn { /// - poco:country // If the "hide" element is present then the profile isn't searchable. - $hide = intval($xpath->evaluate($element."/dfrn:hide/text()", $context)->item(0)->nodeValue == "true"); + $hide = intval($xpath->evaluate($element . "/dfrn:hide/text()", $context)->item(0)->nodeValue == "true"); - logger("Hidden status for contact ".$contact["url"].": ".$hide, LOGGER_DEBUG); + logger("Hidden status for contact " . $contact["url"] . ": " . $hide, LOGGER_DEBUG); // If the contact isn't searchable then set the contact to "hidden". // Problem: This can be manually overridden by the user. - if ($hide) + if ($hide) { $contact["hidden"] = true; + } // Save the keywords into the contact table $tags = array(); - $tagelements = $xpath->evaluate($element."/poco:tags/text()", $context); - foreach($tagelements AS $tag) + $tagelements = $xpath->evaluate($element . "/poco:tags/text()", $context); + foreach ($tagelements AS $tag) { $tags[$tag->nodeValue] = $tag->nodeValue; + } - if (count($tags)) + if (count($tags)) { $poco["keywords"] = implode(", ", $tags); + } // "dfrn:birthday" contains the birthday converted to UTC $old_bdyear = $contact["bdyear"]; - $birthday = $xpath->evaluate($element."/dfrn:birthday/text()", $context)->item(0)->nodeValue; + $birthday = $xpath->evaluate($element . "/dfrn:birthday/text()", $context)->item(0)->nodeValue; if (strtotime($birthday) > time()) { $bd_timestamp = strtotime($birthday); @@ -1303,7 +1400,7 @@ class dfrn { } // "poco:birthday" is the birthday in the format "yyyy-mm-dd" - $value = $xpath->evaluate($element."/poco:birthday/text()", $context)->item(0)->nodeValue; + $value = $xpath->evaluate($element . "/poco:birthday/text()", $context)->item(0)->nodeValue; if (!in_array($value, array("", "0000-00-00"))) { $bdyear = date("Y"); @@ -1319,13 +1416,15 @@ class dfrn { $contact = array_merge($contact, $poco); - if ($old_bdyear != $contact["bdyear"]) + if ($old_bdyear != $contact["bdyear"]) { self::birthday_event($contact, $birthday); + } // Get all field names $fields = array(); - foreach ($r[0] AS $field => $data) + foreach ($r[0] AS $field => $data) { $fields[$field] = $data; + } unset($fields["id"]); unset($fields["uid"]); @@ -1336,20 +1435,22 @@ class dfrn { // Update check for this field has to be done differently $datefields = array("name-date", "uri-date"); - foreach ($datefields AS $field) + foreach ($datefields AS $field) { if (strtotime($contact[$field]) > strtotime($r[0][$field])) { - logger("Difference for contact ".$contact["id"]." in field '".$field."'. New value: '".$contact[$field]."', old value '".$r[0][$field]."'", LOGGER_DEBUG); + logger("Difference for contact " . $contact["id"] . " in field '" . $field . "'. New value: '" . $contact[$field] . "', old value '" . $r[0][$field] . "'", LOGGER_DEBUG); $update = true; } + } - foreach ($fields AS $field => $data) + foreach ($fields AS $field => $data) { if ($contact[$field] != $r[0][$field]) { - logger("Difference for contact ".$contact["id"]." in field '".$field."'. New value: '".$contact[$field]."', old value '".$r[0][$field]."'", LOGGER_DEBUG); + logger("Difference for contact " . $contact["id"] . " in field '" . $field . "'. New value: '" . $contact[$field] . "', old value '" . $r[0][$field] . "'", LOGGER_DEBUG); $update = true; } + } if ($update) { - logger("Update contact data for contact ".$contact["id"]." (".$contact["nick"].")", LOGGER_DEBUG); + logger("Update contact data for contact " . $contact["id"] . " (" . $contact["nick"] . ")", LOGGER_DEBUG); q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `about` = '%s', `location` = '%s', `addr` = '%s', `keywords` = '%s', `bdyear` = '%s', `bd` = '%s', `hidden` = %d, @@ -1365,10 +1466,12 @@ class dfrn { update_contact_avatar($author["avatar"], $importer["uid"], $contact["id"], (strtotime($contact["avatar-date"]) > strtotime($r[0]["avatar-date"]))); - // The generation is a sign for the reliability of the provided data. - // It is used in the socgraph.php to prevent that old contact data - // that was relayed over several servers can overwrite contact - // data that we received directly. + /* + * The generation is a sign for the reliability of the provided data. + * It is used in the socgraph.php to prevent that old contact data + * that was relayed over several servers can overwrite contact + * data that we received directly. + */ $poco["generation"] = 2; $poco["photo"] = $author["avatar"]; @@ -1390,10 +1493,12 @@ class dfrn { * @param text $element element name * * @return string XML string + * @todo Find good type-hints for all parameter */ private static function transform_activity($xpath, $activity, $element) { - if (!is_object($activity)) + if (!is_object($activity)) { return ""; + } $obj_doc = new DOMDocument("1.0", "utf-8"); $obj_doc->formatOutput = true; @@ -1404,21 +1509,26 @@ class dfrn { xml::add_element($obj_doc, $obj_element, "type", $activity_type); $id = $xpath->query("atom:id", $activity)->item(0); - if (is_object($id)) + if (is_object($id)) { $obj_element->appendChild($obj_doc->importNode($id, true)); + } $title = $xpath->query("atom:title", $activity)->item(0); - if (is_object($title)) + if (is_object($title)) { $obj_element->appendChild($obj_doc->importNode($title, true)); + } $links = $xpath->query("atom:link", $activity); - if (is_object($links)) - foreach ($links AS $link) + if (is_object($links)) { + foreach ($links AS $link) { $obj_element->appendChild($obj_doc->importNode($link, true)); + } + } $content = $xpath->query("atom:content", $activity)->item(0); - if (is_object($content)) + if (is_object($content)) { $obj_element->appendChild($obj_doc->importNode($content, true)); + } $obj_doc->appendChild($obj_element); @@ -1435,11 +1545,13 @@ class dfrn { * @param object $xpath XPath object * @param object $mail mail elements * @param array $importer Record of the importer user mixed with contact of the content + * @todo Find good type-hints for all parameter */ private static function process_mail($xpath, $mail, $importer) { logger("Processing mails"); + /// @TODO Rewrite this to one statement $msg = array(); $msg["uid"] = $importer["importer_uid"]; $msg["from-name"] = $xpath->query("dfrn:sender/dfrn:name/text()", $mail)->item(0)->nodeValue; @@ -1459,7 +1571,7 @@ class dfrn { $r = dbq("INSERT INTO `mail` (`".implode("`, `", array_keys($msg))."`) VALUES (".implode(", ", array_values($msg)).")"); // send notifications. - + /// @TODO Arange this mess $notif_params = array( "type" => NOTIFY_MAIL, "notify_flags" => $importer["notify-flags"], @@ -1486,12 +1598,14 @@ class dfrn { * @param object $xpath XPath object * @param object $suggestion suggestion elements * @param array $importer Record of the importer user mixed with contact of the content + * @todo Find good type-hints for all parameter */ private static function process_suggestion($xpath, $suggestion, $importer) { $a = get_app(); logger("Processing suggestions"); + /// @TODO Rewrite this to one statement $suggest = array(); $suggest["uid"] = $importer["importer_uid"]; $suggest["cid"] = $importer["id"]; @@ -1508,8 +1622,17 @@ class dfrn { dbesc(normalise_link($suggest["url"])), intval($suggest["uid"]) ); - if (dbm::is_result($r)) + + /* + * The valid result means the friend we're about to send a friend + * suggestion already has them in their contact, which means no further + * action is required. + * + * @see https://github.com/friendica/friendica/pull/3254#discussion_r107315246 + */ + if (dbm::is_result($r)) { return false; + } // Do we already have an fcontact record for this person? @@ -1527,27 +1650,42 @@ class dfrn { intval($suggest["uid"]), intval($fid) ); - if (dbm::is_result($r)) + + /* + * The valid result means the friend we're about to send a friend + * suggestion already has them in their contact, which means no further + * action is required. + * + * @see https://github.com/friendica/friendica/pull/3254#discussion_r107315246 + */ + if (dbm::is_result($r)) { return false; + } } - if(!$fid) + if (!$fid) { $r = q("INSERT INTO `fcontact` (`name`,`url`,`photo`,`request`) VALUES ('%s', '%s', '%s', '%s')", - dbesc($suggest["name"]), - dbesc($suggest["url"]), - dbesc($suggest["photo"]), - dbesc($suggest["request"]) - ); + dbesc($suggest["name"]), + dbesc($suggest["url"]), + dbesc($suggest["photo"]), + dbesc($suggest["request"]) + ); + } $r = q("SELECT `id` FROM `fcontact` WHERE `url` = '%s' AND `name` = '%s' AND `request` = '%s' LIMIT 1", dbesc($suggest["url"]), dbesc($suggest["name"]), dbesc($suggest["request"]) ); - if (dbm::is_result($r)) - $fid = $r[0]["id"]; - else - // database record did not get created. Quietly give up. - return false; + /* + * If no record in fcontact is found, below INSERT statement will not + * link an introduction to it. + */ + if (!dbm::is_result($r)) { + // database record did not get created. Quietly give up. + killme(); + } + + $fid = $r[0]["id"]; $hash = random_string(); @@ -1588,11 +1726,13 @@ class dfrn { * @param object $xpath XPath object * @param object $relocation relocation elements * @param array $importer Record of the importer user mixed with contact of the content + * @todo Find good type-hints for all parameter */ private static function process_relocation($xpath, $relocation, $importer) { logger("Processing relocations"); + /// @TODO Rewrite this to one statement $relocate = array(); $relocate["uid"] = $importer["importer_uid"]; $relocate["cid"] = $importer["id"]; @@ -1609,18 +1749,23 @@ class dfrn { $relocate["poll"] = $xpath->query("dfrn:poll/text()", $relocation)->item(0)->nodeValue; $relocate["sitepubkey"] = $xpath->query("dfrn:sitepubkey/text()", $relocation)->item(0)->nodeValue; - if (($relocate["avatar"] == "") AND ($relocate["photo"] != "")) + if (($relocate["avatar"] == "") AND ($relocate["photo"] != "")) { $relocate["avatar"] = $relocate["photo"]; + } - if ($relocate["addr"] == "") + if ($relocate["addr"] == "") { $relocate["addr"] = preg_replace("=(https?://)(.*)/profile/(.*)=ism", "$3@$2", $relocate["url"]); + } // update contact $r = q("SELECT `photo`, `url` FROM `contact` WHERE `id` = %d AND `uid` = %d;", intval($importer["id"]), intval($importer["importer_uid"])); - if (!$r) + + if (!dbm::is_result($r)) { + logger("Query failed to execute, no result returned in " . __FUNCTION__); return false; + } $old = $r[0]; @@ -1676,8 +1821,9 @@ class dfrn { update_contact_avatar($relocate["avatar"], $importer["importer_uid"], $importer["id"], true); - if ($x === false) + if ($x === false) { return false; + } // update items /// @todo This is an extreme performance killer @@ -1686,19 +1832,21 @@ class dfrn { 'author-link' => array($old["url"], $relocate["url"]), //'owner-avatar' => array($old["photo"], $relocate["photo"]), //'author-avatar' => array($old["photo"], $relocate["photo"]), - ); + ); foreach ($fields as $n=>$f) { $r = q("SELECT `id` FROM `item` WHERE `%s` = '%s' AND `uid` = %d LIMIT 1", $n, dbesc($f[0]), intval($importer["importer_uid"])); - if ($r) { + if (dbm::is_result($r)) { $x = q("UPDATE `item` SET `%s` = '%s' WHERE `%s` = '%s' AND `uid` = %d", $n, dbesc($f[1]), $n, dbesc($f[0]), intval($importer["importer_uid"])); - if ($x === false) + + if ($x === false) { return false; + } } } @@ -1717,6 +1865,7 @@ class dfrn { * @param array $item the new item record * @param array $importer Record of the importer user mixed with contact of the content * @param int $entrytype Is it a toplevel entry, a comment or a relayed comment? + * @todo set proper type-hints (array?) */ private static function update_content($current, $item, $importer, $entrytype) { $changed = false; @@ -1724,8 +1873,9 @@ class dfrn { if (edited_timestamp_is_newer($current, $item)) { // do not accept (ignore) an earlier edit than one we currently have. - if(datetime_convert("UTC","UTC",$item["edited"]) < $current["edited"]) - return(false); + if (datetime_convert("UTC","UTC",$item["edited"]) < $current["edited"]) { + return false; + } $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s', `changed` = '%s' WHERE `uri` = '%s' AND `uid` = %d", dbesc($item["title"]), @@ -1741,12 +1891,13 @@ class dfrn { $changed = true; - if ($entrytype == DFRN_REPLY_RC) + if ($entrytype == DFRN_REPLY_RC) { proc_run(PRIORITY_HIGH, "include/notifier.php","comment-import", $current["id"]); + } } // update last-child if it changes - if($item["last-child"] AND ($item["last-child"] != $current["last-child"])) { + if ($item["last-child"] AND ($item["last-child"] != $current["last-child"])) { $r = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d", dbesc(datetime_convert()), dbesc($item["parent-uri"]), @@ -1769,17 +1920,19 @@ class dfrn { * @param array $item the new item record * * @return int Is it a toplevel entry, a comment or a relayed comment? + * @todo set proper type-hints (array?) */ private static function get_entry_type($importer, $item) { if ($item["parent-uri"] != $item["uri"]) { $community = false; - if($importer["page-flags"] == PAGE_COMMUNITY || $importer["page-flags"] == PAGE_PRVGROUP) { + if ($importer["page-flags"] == PAGE_COMMUNITY || $importer["page-flags"] == PAGE_PRVGROUP) { $sql_extra = ""; $community = true; logger("possible community action"); - } else + } else { $sql_extra = " AND `contact`.`self` AND `item`.`wall` "; + } // was the top-level post for this action written by somebody on this site? // Specifically, the recipient? @@ -1803,29 +1956,32 @@ class dfrn { dbesc($r[0]["parent-uri"]), intval($importer["importer_uid"]) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $is_a_remote_action = true; - } - - // Does this have the characteristics of a community or private group action? - // If it's an action to a wall post on a community/prvgroup page it's a - // valid community action. Also forum_mode makes it valid for sure. - // If neither, it's not. - - if($is_a_remote_action && $community) { - if((!$r[0]["forum_mode"]) && (!$r[0]["wall"])) { - $is_a_remote_action = false; - logger("not a community action"); } } - if ($is_a_remote_action) - return DFRN_REPLY_RC; - else - return DFRN_REPLY; + /* + * Does this have the characteristics of a community or private group action? + * If it's an action to a wall post on a community/prvgroup page it's a + * valid community action. Also forum_mode makes it valid for sure. + * If neither, it's not. + */ - } else + /// @TODO Maybe merge these if() blocks into one? + if ($is_a_remote_action && $community && (!$r[0]["forum_mode"]) && (!$r[0]["wall"])) { + $is_a_remote_action = false; + logger("not a community action"); + } + + if ($is_a_remote_action) { + return DFRN_REPLY_RC; + } else { + return DFRN_REPLY; + } + } else { return DFRN_TOP_LEVEL; + } } @@ -1835,19 +1991,21 @@ class dfrn { * @param array $item the new item record * @param array $importer Record of the importer user mixed with contact of the content * @param int $posted_id The record number of item record that was just posted + * @todo set proper type-hints (array?) */ private static function do_poke($item, $importer, $posted_id) { $verb = urldecode(substr($item["verb"],strpos($item["verb"], "#")+1)); - if(!$verb) + if (!$verb) { return; + } $xo = parse_xml_string($item["object"],false); - if(($xo->type == ACTIVITY_OBJ_PERSON) && ($xo->id)) { + if (($xo->type == ACTIVITY_OBJ_PERSON) && ($xo->id)) { // somebody was poked/prodded. Was it me? - foreach($xo->link as $l) { + foreach ($xo->link as $l) { $atts = $l->attributes(); - switch($atts["rel"]) { + switch ($atts["rel"]) { case "alternate": $Blink = $atts["href"]; break; @@ -1856,7 +2014,7 @@ class dfrn { } } - if($Blink && link_compare($Blink,App::get_baseurl()."/profile/".$importer["nickname"])) { + if ($Blink && link_compare($Blink, App::get_baseurl() . "/profile/" . $importer["nickname"])) { // send a notification notification(array( @@ -1890,6 +2048,7 @@ class dfrn { * @param bool $is_like Is the verb a "like"? * * @return bool Should the processing of the entries be continued? + * @todo set proper type-hints (array?) */ private static function process_verbs($entrytype, $importer, &$item, &$is_like) { @@ -1904,28 +2063,28 @@ class dfrn { // Big question: Do we need these functions? They were part of the "consume_feed" function. // This function once was responsible for DFRN and OStatus. - if(activity_match($item["verb"],ACTIVITY_FOLLOW)) { + if (activity_match($item["verb"], ACTIVITY_FOLLOW)) { logger("New follower"); new_follower($importer, $contact, $item, $nickname); return false; } - if(activity_match($item["verb"],ACTIVITY_UNFOLLOW)) { + if (activity_match($item["verb"], ACTIVITY_UNFOLLOW)) { logger("Lost follower"); lose_follower($importer, $contact, $item); return false; } - if(activity_match($item["verb"],ACTIVITY_REQ_FRIEND)) { + if (activity_match($item["verb"], ACTIVITY_REQ_FRIEND)) { logger("New friend request"); new_follower($importer, $contact, $item, $nickname, true); return false; } - if(activity_match($item["verb"],ACTIVITY_UNFRIEND)) { + if (activity_match($item["verb"], ACTIVITY_UNFRIEND)) { logger("Lost sharer"); lose_sharer($importer, $contact, $item); return false; } } else { - if(($item["verb"] == ACTIVITY_LIKE) + if (($item["verb"] == ACTIVITY_LIKE) || ($item["verb"] == ACTIVITY_DISLIKE) || ($item["verb"] == ACTIVITY_ATTEND) || ($item["verb"] == ACTIVITY_ATTENDNO) @@ -1941,8 +2100,9 @@ class dfrn { dbesc($item["verb"]), dbesc($item["parent-uri"]) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { return false; + } $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `author-link` = '%s' AND `verb` = '%s' AND `thr-parent` = '%s' AND NOT `deleted` LIMIT 1", intval($item["uid"]), @@ -1950,28 +2110,32 @@ class dfrn { dbesc($item["verb"]), dbesc($item["parent-uri"]) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { return false; - } else + } + } else { $is_like = false; + } - if(($item["verb"] == ACTIVITY_TAG) && ($item["object-type"] == ACTIVITY_OBJ_TAGTERM)) { + if (($item["verb"] == ACTIVITY_TAG) && ($item["object-type"] == ACTIVITY_OBJ_TAGTERM)) { $xo = parse_xml_string($item["object"],false); $xt = parse_xml_string($item["target"],false); - if($xt->type == ACTIVITY_OBJ_NOTE) { + if ($xt->type == ACTIVITY_OBJ_NOTE) { $r = q("SELECT `id`, `tag` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($xt->id), intval($importer["importer_uid"]) ); - if (!dbm::is_result($r)) + if (!dbm::is_result($r)) { + logger("Query failed to execute, no result returned in " . __FUNCTION__); return false; + } // extract tag, if not duplicate, add to parent item - if($xo->content) { - if(!(stristr($r[0]["tag"],trim($xo->content)))) { + if ($xo->content) { + if (!(stristr($r[0]["tag"],trim($xo->content)))) { q("UPDATE `item` SET `tag` = '%s' WHERE `id` = %d", dbesc($r[0]["tag"] . (strlen($r[0]["tag"]) ? ',' : '') . '#[url=' . $xo->id . ']'. $xo->content . '[/url]'), intval($r[0]["id"]) @@ -1990,6 +2154,7 @@ class dfrn { * * @param object $links link elements * @param array $item the item record + * @todo set proper type-hints */ private static function parse_links($links, &$item) { $rel = ""; @@ -1998,31 +2163,39 @@ class dfrn { $length = "0"; $title = ""; foreach ($links AS $link) { - foreach($link->attributes AS $attributes) { - if ($attributes->name == "href") + foreach ($link->attributes AS $attributes) { + /// @TODO Rewrite these repeated (same) if() statements to a switch() + if ($attributes->name == "href") { $href = $attributes->textContent; - if ($attributes->name == "rel") + } + if ($attributes->name == "rel") { $rel = $attributes->textContent; - if ($attributes->name == "type") + } + if ($attributes->name == "type") { $type = $attributes->textContent; - if ($attributes->name == "length") + } + if ($attributes->name == "length") { $length = $attributes->textContent; - if ($attributes->name == "title") + } + if ($attributes->name == "title") { $title = $attributes->textContent; + } } - if (($rel != "") AND ($href != "")) - switch($rel) { + if (($rel != "") AND ($href != "")) { + switch ($rel) { case "alternate": $item["plink"] = $href; break; case "enclosure": $enclosure = $href; - if(strlen($item["attach"])) + if (strlen($item["attach"])) { $item["attach"] .= ","; + } - $item["attach"] .= '[attach]href="'.$href.'" length="'.$length.'" type="'.$type.'" title="'.$title.'"[/attach]'; + $item["attach"] .= '[attach]href="' . $href . '" length="' . $length . '" type="' . $type . '" title="' . $title . '"[/attach]'; break; } + } } } @@ -2033,6 +2206,7 @@ class dfrn { * @param object $xpath XPath object * @param object $entry entry elements * @param array $importer Record of the importer user mixed with contact of the content + * @todo Add type-hints */ private static function process_entry($header, $xpath, $entry, $importer) { @@ -2083,7 +2257,7 @@ class dfrn { $item["body"] = limit_body_size($item["body"]); /// @todo Do we really need this check for HTML elements? (It was copied from the old function) - if((strpos($item['body'],'<') !== false) && (strpos($item['body'],'>') !== false)) { + if ((strpos($item['body'],'<') !== false) && (strpos($item['body'],'>') !== false)) { $item['body'] = reltoabs($item['body'],$base_url); @@ -2112,21 +2286,24 @@ class dfrn { $item["location"] = $xpath->query("dfrn:location/text()", $entry)->item(0)->nodeValue; $georsspoint = $xpath->query("georss:point", $entry); - if ($georsspoint) + if ($georsspoint) { $item["coord"] = $georsspoint->item(0)->nodeValue; + } $item["private"] = $xpath->query("dfrn:private/text()", $entry)->item(0)->nodeValue; $item["extid"] = $xpath->query("dfrn:extid/text()", $entry)->item(0)->nodeValue; - if ($xpath->query("dfrn:bookmark/text()", $entry)->item(0)->nodeValue == "true") + if ($xpath->query("dfrn:bookmark/text()", $entry)->item(0)->nodeValue == "true") { $item["bookmark"] = true; + } $notice_info = $xpath->query("statusnet:notice_info", $entry); if ($notice_info AND ($notice_info->length > 0)) { - foreach($notice_info->item(0)->attributes AS $attributes) { - if ($attributes->name == "source") + foreach ($notice_info->item(0)->attributes AS $attributes) { + if ($attributes->name == "source") { $item["app"] = strip_tags($attributes->textContent); + } } } @@ -2134,21 +2311,24 @@ class dfrn { // We store the data from "dfrn:diaspora_signature" in a different table, this is done in "item_store" $dsprsig = unxmlify($xpath->query("dfrn:diaspora_signature/text()", $entry)->item(0)->nodeValue); - if ($dsprsig != "") + if ($dsprsig != "") { $item["dsprsig"] = $dsprsig; + } $item["verb"] = $xpath->query("activity:verb/text()", $entry)->item(0)->nodeValue; - if ($xpath->query("activity:object-type/text()", $entry)->item(0)->nodeValue != "") + if ($xpath->query("activity:object-type/text()", $entry)->item(0)->nodeValue != "") { $item["object-type"] = $xpath->query("activity:object-type/text()", $entry)->item(0)->nodeValue; + } $object = $xpath->query("activity:object", $entry)->item(0); $item["object"] = self::transform_activity($xpath, $object, "object"); if (trim($item["object"]) != "") { $r = parse_xml_string($item["object"], false); - if (isset($r->type)) + if (isset($r->type)) { $item["object-type"] = $r->type; + } } $target = $xpath->query("activity:target", $entry)->item(0); @@ -2159,12 +2339,14 @@ class dfrn { foreach ($categories AS $category) { $term = ""; $scheme = ""; - foreach($category->attributes AS $attributes) { - if ($attributes->name == "term") + foreach ($category->attributes AS $attributes) { + if ($attributes->name == "term") { $term = $attributes->textContent; + } - if ($attributes->name == "scheme") + if ($attributes->name == "scheme") { $scheme = $attributes->textContent; + } } if (($term != "") AND ($scheme != "")) { @@ -2173,10 +2355,11 @@ class dfrn { $termhash = array_shift($parts); $termurl = implode(":", $parts); - if(strlen($item["tag"])) + if (strlen($item["tag"])) { $item["tag"] .= ","; + } - $item["tag"] .= $termhash."[url=".$termurl."]".$term."[/url]"; + $item["tag"] .= $termhash . "[url=" . $termurl . "]" . $term . "[/url]"; } } } @@ -2185,38 +2368,48 @@ class dfrn { $enclosure = ""; $links = $xpath->query("atom:link", $entry); - if ($links) + if ($links) { self::parse_links($links, $item); + } // Is it a reply or a top level posting? $item["parent-uri"] = $item["uri"]; $inreplyto = $xpath->query("thr:in-reply-to", $entry); - if (is_object($inreplyto->item(0))) - foreach($inreplyto->item(0)->attributes AS $attributes) - if ($attributes->name == "ref") + if (is_object($inreplyto->item(0))) { + foreach ($inreplyto->item(0)->attributes AS $attributes) { + if ($attributes->name == "ref") { $item["parent-uri"] = $attributes->textContent; + } + } + } // Get the type of the item (Top level post, reply or remote reply) $entrytype = self::get_entry_type($importer, $item); // Now assign the rest of the values that depend on the type of the message if (in_array($entrytype, array(DFRN_REPLY, DFRN_REPLY_RC))) { - if (!isset($item["object-type"])) + if (!isset($item["object-type"])) { $item["object-type"] = ACTIVITY_OBJ_COMMENT; + } - if ($item["contact-id"] != $owner["contact-id"]) + if ($item["contact-id"] != $owner["contact-id"]) { $item["contact-id"] = $owner["contact-id"]; + } - if (($item["network"] != $owner["network"]) AND ($owner["network"] != "")) + if (($item["network"] != $owner["network"]) AND ($owner["network"] != "")) { $item["network"] = $owner["network"]; + } - if ($item["contact-id"] != $author["contact-id"]) + if ($item["contact-id"] != $author["contact-id"]) { $item["contact-id"] = $author["contact-id"]; + } - if (($item["network"] != $author["network"]) AND ($author["network"] != "")) + if (($item["network"] != $author["network"]) AND ($author["network"] != "")) { $item["network"] = $author["network"]; + } + /// @TODO maybe remove this old-lost code then? // This code was taken from the old DFRN code // When activated, forums don't work. // And: Why should we disallow commenting by followers? @@ -2231,15 +2424,17 @@ class dfrn { $item["type"] = "remote-comment"; $item["wall"] = 1; } elseif ($entrytype == DFRN_TOP_LEVEL) { - if (!isset($item["object-type"])) + if (!isset($item["object-type"])) { $item["object-type"] = ACTIVITY_OBJ_NOTE; + } // Is it an event? if ($item["object-type"] == ACTIVITY_OBJ_EVENT) { logger("Item ".$item["uri"]." seems to contain an event.", LOGGER_DEBUG); $ev = bbtoevent($item["body"]); - if((x($ev, "desc") || x($ev, "summary")) && x($ev, "start")) { + if ((x($ev, "desc") || x($ev, "summary")) && x($ev, "start")) { logger("Event in item ".$item["uri"]." was found.", LOGGER_DEBUG); + /// @TODO Mixure of "/' ahead ... $ev["cid"] = $importer["id"]; $ev["uid"] = $importer["uid"]; $ev["uri"] = $item["uri"]; @@ -2251,8 +2446,9 @@ class dfrn { dbesc($item["uri"]), intval($importer["uid"]) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $ev["id"] = $r[0]["id"]; + } $event_id = event_store($ev); logger("Event ".$event_id." was stored", LOGGER_DEBUG); @@ -2268,10 +2464,11 @@ class dfrn { // Update content if 'updated' changes if (dbm::is_result($current)) { - if (self::update_content($r[0], $item, $importer, $entrytype)) + if (self::update_content($r[0], $item, $importer, $entrytype)) { logger("Item ".$item["uri"]." was updated.", LOGGER_DEBUG); - else + } else { logger("Item ".$item["uri"]." already existed.", LOGGER_DEBUG); + } return; } @@ -2279,7 +2476,7 @@ class dfrn { $posted_id = item_store($item); $parent = 0; - if($posted_id) { + if ($posted_id) { logger("Reply from contact ".$item["contact-id"]." was stored with id ".$posted_id, LOGGER_DEBUG); @@ -2294,7 +2491,7 @@ class dfrn { $parent_uri = $r[0]["parent-uri"]; } - if(!$is_like) { + if (!$is_like) { $r1 = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `uid` = %d AND `parent` = %d", dbesc(datetime_convert()), intval($importer["importer_uid"]), @@ -2308,7 +2505,7 @@ class dfrn { ); } - if($posted_id AND $parent AND ($entrytype == DFRN_REPLY_RC)) { + if ($posted_id AND $parent AND ($entrytype == DFRN_REPLY_RC)) { logger("Notifying followers about comment ".$posted_id, LOGGER_DEBUG); proc_run(PRIORITY_HIGH, "include/notifier.php", "comment-import", $posted_id); } @@ -2316,18 +2513,20 @@ class dfrn { return true; } } else { // $entrytype == DFRN_TOP_LEVEL - if(!link_compare($item["owner-link"],$importer["url"])) { - // The item owner info is not our contact. It's OK and is to be expected if this is a tgroup delivery, - // but otherwise there's a possible data mixup on the sender's system. - // the tgroup delivery code called from item_store will correct it if it's a forum, - // but we're going to unconditionally correct it here so that the post will always be owned by our contact. + if (!link_compare($item["owner-link"],$importer["url"])) { + /* + * The item owner info is not our contact. It's OK and is to be expected if this is a tgroup delivery, + * but otherwise there's a possible data mixup on the sender's system. + * the tgroup delivery code called from item_store will correct it if it's a forum, + * but we're going to unconditionally correct it here so that the post will always be owned by our contact. + */ logger('Correcting item owner.', LOGGER_DEBUG); $item["owner-name"] = $importer["senderName"]; $item["owner-link"] = $importer["url"]; $item["owner-avatar"] = $importer["thumb"]; } - if(($importer["rel"] == CONTACT_IS_FOLLOWER) && (!tgroup_check($importer["importer_uid"], $item))) { + if (($importer["rel"] == CONTACT_IS_FOLLOWER) && (!tgroup_check($importer["importer_uid"], $item))) { logger("Contact ".$importer["id"]." is only follower and tgroup check was negative.", LOGGER_DEBUG); return; } @@ -2351,24 +2550,29 @@ class dfrn { * @param object $xpath XPath object * @param object $deletion deletion elements * @param array $importer Record of the importer user mixed with contact of the content + * @todo set proper type-hints */ private static function process_deletion($xpath, $deletion, $importer) { logger("Processing deletions"); - foreach($deletion->attributes AS $attributes) { - if ($attributes->name == "ref") + foreach ($deletion->attributes AS $attributes) { + if ($attributes->name == "ref") { $uri = $attributes->textContent; - if ($attributes->name == "when") + } + if ($attributes->name == "when") { $when = $attributes->textContent; + } } - if ($when) + if ($when) { $when = datetime_convert("UTC", "UTC", $when, "Y-m-d H:i:s"); - else + } else { $when = datetime_convert("UTC", "UTC", "now", "Y-m-d H:i:s"); + } - if (!$uri OR !$importer["id"]) + if (!$uri OR !$importer["id"]) { return false; + } /// @todo Only select the used fields $r = q("SELECT `item`.*, `contact`.`self` FROM `item` INNER JOIN `contact` on `item`.`contact-id` = `contact`.`id` @@ -2378,7 +2582,7 @@ class dfrn { intval($importer["id"]) ); if (!dbm::is_result($r)) { - logger("Item with uri ".$uri." from contact ".$importer["id"]." for user ".$importer["uid"]." wasn't found.", LOGGER_DEBUG); + logger("Item with uri " . $uri . " from contact " . $importer["id"] . " for user " . $importer["uid"] . " wasn't found.", LOGGER_DEBUG); return; } else { @@ -2386,22 +2590,23 @@ class dfrn { $entrytype = self::get_entry_type($importer, $item); - if(!$item["deleted"]) + if (!$item["deleted"]) { logger('deleting item '.$item["id"].' uri='.$uri, LOGGER_DEBUG); - else + } else { return; + } - if($item["object-type"] == ACTIVITY_OBJ_EVENT) { + if ($item["object-type"] == ACTIVITY_OBJ_EVENT) { logger("Deleting event ".$item["event-id"], LOGGER_DEBUG); event_delete($item["event-id"]); } - if(($item["verb"] == ACTIVITY_TAG) && ($item["object-type"] == ACTIVITY_OBJ_TAGTERM)) { + if (($item["verb"] == ACTIVITY_TAG) && ($item["object-type"] == ACTIVITY_OBJ_TAGTERM)) { $xo = parse_xml_string($item["object"],false); $xt = parse_xml_string($item["target"],false); - if($xt->type == ACTIVITY_OBJ_NOTE) { + if ($xt->type == ACTIVITY_OBJ_NOTE) { $i = q("SELECT `id`, `contact-id`, `tag` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($xt->id), intval($importer["importer_uid"]) @@ -2414,18 +2619,21 @@ class dfrn { $author_remove = (($item["origin"] && $item["self"]) ? true : false); $author_copy = (($item["origin"]) ? true : false); - if($owner_remove && $author_copy) + if ($owner_remove && $author_copy) { return; - if($author_remove || $owner_remove) { + } + if ($author_remove || $owner_remove) { $tags = explode(',',$i[0]["tag"]); $newtags = array(); - if(count($tags)) { - foreach($tags as $tag) - if(trim($tag) !== trim($xo->body)) + if (count($tags)) { + foreach ($tags as $tag) { + if (trim($tag) !== trim($xo->body)) { $newtags[] = trim($tag); + } + } } q("UPDATE `item` SET `tag` = '%s' WHERE `id` = %d", - dbesc(implode(',',$newtags)), + dbesc(implode(',', $newtags)), intval($i[0]["id"]) ); create_tags_from_item($i[0]["id"]); @@ -2434,7 +2642,7 @@ class dfrn { } } - if($entrytype == DFRN_TOP_LEVEL) { + if ($entrytype == DFRN_TOP_LEVEL) { $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '', `title` = '' WHERE `parent-uri` = '%s' AND `uid` = %d", @@ -2479,8 +2687,8 @@ class dfrn { } // if this is a relayed delete, propagate it to other recipients - if($entrytype == DFRN_REPLY_RC) { - logger("Notifying followers about deletion of post ".$item["id"], LOGGER_DEBUG); + if ($entrytype == DFRN_REPLY_RC) { + logger("Notifying followers about deletion of post " . $item["id"], LOGGER_DEBUG); proc_run(PRIORITY_HIGH, "include/notifier.php","drop", $item["id"]); } } @@ -2493,13 +2701,15 @@ class dfrn { * @param text $xml The DFRN message * @param array $importer Record of the importer user mixed with contact of the content * @param bool $sort_by_date Is used when feeds are polled + * @todo set proper type-hints */ public static function import($xml,$importer, $sort_by_date = false) { - if ($xml == "") + if ($xml == "") { return; + } - if($importer["readonly"]) { + if ($importer["readonly"]) { // We aren't receiving stuff from this person. But we will quietly ignore them // rather than a blatant "go away" message. logger('ignoring contact '.$importer["id"]); @@ -2532,56 +2742,66 @@ class dfrn { // Update the contact table if the data has changed // The "atom:author" is only present in feeds - if ($xpath->query("/atom:feed/atom:author")->length > 0) + if ($xpath->query("/atom:feed/atom:author")->length > 0) { self::fetchauthor($xpath, $doc->firstChild, $importer, "atom:author", false, $xml); + } // Only the "dfrn:owner" in the head section contains all data - if ($xpath->query("/atom:feed/dfrn:owner")->length > 0) + if ($xpath->query("/atom:feed/dfrn:owner")->length > 0) { self::fetchauthor($xpath, $doc->firstChild, $importer, "dfrn:owner", false, $xml); + } - logger("Import DFRN message for user ".$importer["uid"]." from contact ".$importer["id"], LOGGER_DEBUG); + logger("Import DFRN message for user " . $importer["uid"] . " from contact " . $importer["id"], LOGGER_DEBUG); // The account type is new since 3.5.1 if ($xpath->query("/atom:feed/dfrn:account_type")->length > 0) { $accounttype = intval($xpath->evaluate("/atom:feed/dfrn:account_type/text()", $context)->item(0)->nodeValue); - if ($accounttype != $importer["contact-type"]) + if ($accounttype != $importer["contact-type"]) { + /// @TODO this way is the norm or putting ); at the end of the line? q("UPDATE `contact` SET `contact-type` = %d WHERE `id` = %d", intval($accounttype), intval($importer["id"]) ); + } } // is it a public forum? Private forums aren't supported with this method // This is deprecated since 3.5.1 $forum = intval($xpath->evaluate("/atom:feed/dfrn:community/text()", $context)->item(0)->nodeValue); - if ($forum != $importer["forum"]) + if ($forum != $importer["forum"]) { q("UPDATE `contact` SET `forum` = %d WHERE `forum` != %d AND `id` = %d", intval($forum), intval($forum), intval($importer["id"]) ); + } $mails = $xpath->query("/atom:feed/dfrn:mail"); - foreach ($mails AS $mail) + foreach ($mails AS $mail) { self::process_mail($xpath, $mail, $importer); + } $suggestions = $xpath->query("/atom:feed/dfrn:suggest"); - foreach ($suggestions AS $suggestion) + foreach ($suggestions AS $suggestion) { self::process_suggestion($xpath, $suggestion, $importer); + } $relocations = $xpath->query("/atom:feed/dfrn:relocate"); - foreach ($relocations AS $relocation) + foreach ($relocations AS $relocation) { self::process_relocation($xpath, $relocation, $importer); + } $deletions = $xpath->query("/atom:feed/at:deleted-entry"); - foreach ($deletions AS $deletion) + foreach ($deletions AS $deletion) { self::process_deletion($xpath, $deletion, $importer); + } if (!$sort_by_date) { $entries = $xpath->query("/atom:feed/atom:entry"); - foreach ($entries AS $entry) + foreach ($entries AS $entry) { self::process_entry($header, $xpath, $entry, $importer); + } } else { $newentries = array(); $entries = $xpath->query("/atom:feed/atom:entry"); @@ -2593,10 +2813,10 @@ class dfrn { // Now sort after the publishing date ksort($newentries); - foreach ($newentries AS $entry) + foreach ($newentries AS $entry) { self::process_entry($header, $xpath, $entry, $importer); + } } - logger("Import done for user ".$importer["uid"]." from contact ".$importer["id"], LOGGER_DEBUG); + logger("Import done for user " . $importer["uid"] . " from contact " . $importer["id"], LOGGER_DEBUG); } } -?> diff --git a/include/items.php b/include/items.php index 24eb1b30f..c2b3d7d1f 100644 --- a/include/items.php +++ b/include/items.php @@ -1496,17 +1496,19 @@ function item_is_remote_self($contact, &$datarray) { return true; } -function new_follower($importer,$contact,$datarray,$item,$sharing = false) { +function new_follower($importer, $contact, $datarray, $item, $sharing = false) { $url = notags(trim($datarray['author-link'])); $name = notags(trim($datarray['author-name'])); $photo = notags(trim($datarray['author-avatar'])); if (is_object($item)) { $rawtag = $item->get_item_tags(NAMESPACE_ACTIVITY,'actor'); - if ($rawtag && $rawtag[0]['child'][NAMESPACE_POCO]['preferredUsername'][0]['data']) + if ($rawtag && $rawtag[0]['child'][NAMESPACE_POCO]['preferredUsername'][0]['data']) { $nick = $rawtag[0]['child'][NAMESPACE_POCO]['preferredUsername'][0]['data']; - } else + } + } else { $nick = $item; + } if (is_array($contact)) { if (($contact['network'] == NETWORK_OSTATUS && $contact['rel'] == CONTACT_IS_SHARING) @@ -1544,11 +1546,9 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) { update_contact_avatar($photo, $importer["uid"], $contact_record["id"], true); } - $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer['uid']) ); - $a = get_app(); if (dbm::is_result($r) AND !in_array($r[0]['page-flags'], array(PAGE_SOAPBOX, PAGE_FREELOVE))) { @@ -1567,8 +1567,9 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) { $def_gid = get_default_group($importer['uid'], $contact_record["network"]); - if (intval($def_gid)) - group_add_member($importer['uid'],'',$contact_record['id'],$def_gid); + if (intval($def_gid)) { + group_add_member($importer['uid'], '', $contact_record['id'], $def_gid); + } if (($r[0]['notify-flags'] & NOTIFY_INTRO) && in_array($r[0]['page-flags'], array(PAGE_NORMAL))) { @@ -1599,7 +1600,7 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) { } } -function lose_follower($importer,$contact,$datarray = array(),$item = "") { +function lose_follower($importer, $contact, array $datarray = array(), $item = "") { if (($contact['rel'] == CONTACT_IS_FRIEND) || ($contact['rel'] == CONTACT_IS_SHARING)) { q("UPDATE `contact` SET `rel` = %d WHERE `id` = %d", @@ -1611,7 +1612,7 @@ function lose_follower($importer,$contact,$datarray = array(),$item = "") { } } -function lose_sharer($importer,$contact,$datarray = array(),$item = "") { +function lose_sharer($importer, $contact, array $datarray = array(), $item = "") { if (($contact['rel'] == CONTACT_IS_FRIEND) || ($contact['rel'] == CONTACT_IS_FOLLOWER)) { q("UPDATE `contact` SET `rel` = %d WHERE `id` = %d", @@ -1623,7 +1624,7 @@ function lose_sharer($importer,$contact,$datarray = array(),$item = "") { } } -function subscribe_to_hub($url,$importer,$contact,$hubmode = 'subscribe') { +function subscribe_to_hub($url, $importer, $contact, $hubmode = 'subscribe') { $a = get_app(); diff --git a/include/update_gcontact.php b/include/update_gcontact.php index 08d4149a7..221c0829f 100644 --- a/include/update_gcontact.php +++ b/include/update_gcontact.php @@ -2,11 +2,11 @@ use \Friendica\Core\Config; -function update_gcontact_run(&$argv, &$argc){ +function update_gcontact_run(&$argv, &$argc) { global $a; - require_once('include/Scrape.php'); - require_once('include/socgraph.php'); + require_once 'include/Scrape.php'; + require_once 'include/socgraph.php'; logger('update_gcontact: start'); @@ -21,11 +21,13 @@ function update_gcontact_run(&$argv, &$argc){ $r = q("SELECT * FROM `gcontact` WHERE `id` = %d", intval($contact_id)); - if (!$r) + if (!dbm::_is_result($r)) { return; + } - if (!in_array($r[0]["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) + if (!in_array($r[0]["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) { return; + } $data = probe_url($r[0]["url"]); diff --git a/index.php b/index.php index 7408f495c..ebc65cdb0 100644 --- a/index.php +++ b/index.php @@ -28,17 +28,17 @@ $a->backend = false; /** * * Load the configuration file which contains our DB credentials. - * Ignore errors. If the file doesn't exist or is empty, we are running in installation mode. + * Ignore errors. If the file doesn't exist or is empty, we are running in + * installation mode. * */ $install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false : true); -@include(".htconfig.php"); - - - - +// Only load config if found, don't surpress errors +if (!$install) { + include ".htconfig.php"; +} /** * @@ -46,11 +46,11 @@ $install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false * */ -require_once("include/dba.php"); +require_once "include/dba.php"; -if(!$install) { +if (!$install) { $db = new dba($db_host, $db_user, $db_pass, $db_data, $install); - unset($db_host, $db_user, $db_pass, $db_data); + unset($db_host, $db_user, $db_pass, $db_data); /** * Load configs from db. Overwrite configs from .htconfig.php @@ -59,17 +59,17 @@ if(!$install) { Config::load(); if ($a->max_processes_reached() OR $a->maxload_reached()) { - header($_SERVER["SERVER_PROTOCOL"].' 503 Service Temporarily Unavailable'); + header($_SERVER["SERVER_PROTOCOL"] . ' 503 Service Temporarily Unavailable'); header('Retry-After: 120'); - header('Refresh: 120; url='.App::get_baseurl()."/".$a->query_string); + header('Refresh: 120; url=' . App::get_baseurl() . "/" . $a->query_string); die("System is currently unavailable. Please try again later"); } - if (get_config('system','force_ssl') AND ($a->get_scheme() == "http") AND - (intval(get_config('system','ssl_policy')) == SSL_POLICY_FULL) AND + if (get_config('system', 'force_ssl') AND ($a->get_scheme() == "http") AND + (intval(get_config('system', 'ssl_policy')) == SSL_POLICY_FULL) AND (substr(App::get_baseurl(), 0, 8) == "https://")) { header("HTTP/1.1 302 Moved Temporarily"); - header("Location: ".App::get_baseurl()."/".$a->query_string); + header("Location: " . App::get_baseurl() . "/" . $a->query_string); exit(); } @@ -117,12 +117,12 @@ if (x($_SESSION,'authenticated') && !x($_SESSION,'language')) { if (dbm::is_result($r)) $_SESSION['language'] = $r[0]['language']; } -if((x($_SESSION,'language')) && ($_SESSION['language'] !== $lang)) { +if ((x($_SESSION,'language')) && ($_SESSION['language'] !== $lang)) { $lang = $_SESSION['language']; load_translation_table($lang); } -if((x($_GET,'zrl')) && (!$install && !$maintenance)) { +if ((x($_GET,'zrl')) && (!$install && !$maintenance)) { // Only continue when the given profile link seems valid // Valid profile links contain a path with "/profile/" and no query parameters if ((parse_url($_GET['zrl'], PHP_URL_QUERY) == "") AND @@ -223,7 +223,7 @@ if ((local_user()) || (! $privateapps === "1")) { * further processing. */ -if(strlen($a->module)) { +if (strlen($a->module)) { /** * @@ -233,12 +233,14 @@ if(strlen($a->module)) { */ // Compatibility with the Android Diaspora client - if ($a->module == "stream") + if ($a->module == "stream") { $a->module = "network"; + } // Compatibility with the Firefox App - if (($a->module == "users") AND ($a->cmd == "users/sign_in")) + if (($a->module == "users") AND ($a->cmd == "users/sign_in")) { $a->module = "login"; + } $privateapps = get_config('config','private_addons'); @@ -246,11 +248,11 @@ if(strlen($a->module)) { //Check if module is an app and if public access to apps is allowed or not if ((!local_user()) && plugin_is_app($a->module) && $privateapps === "1") { info( t("You must be logged in to use addons. ")); - } - else { + } else { include_once("addon/{$a->module}/{$a->module}.php"); - if(function_exists($a->module . '_module')) + if (function_exists($a->module . '_module')) { $a->module_loaded = true; + } } } @@ -320,29 +322,22 @@ if (!$install && !$maintenance) { * Call module functions */ -if($a->module_loaded) { +if ($a->module_loaded) { $a->page['page_title'] = $a->module; $placeholder = ''; - if(function_exists($a->module . '_init')) { + if (function_exists($a->module . '_init')) { call_hooks($a->module . '_mod_init', $placeholder); $func = $a->module . '_init'; $func($a); } - if(function_exists(str_replace('-','_',current_theme()) . '_init')) { + if (function_exists(str_replace('-','_',current_theme()) . '_init')) { $func = str_replace('-','_',current_theme()) . '_init'; $func($a); } -// elseif (x($a->theme_info,"extends") && file_exists("view/theme/".$a->theme_info["extends"]."/theme.php")) { -// require_once("view/theme/".$a->theme_info["extends"]."/theme.php"); -// if(function_exists(str_replace('-','_',$a->theme_info["extends"]) . '_init')) { -// $func = str_replace('-','_',$a->theme_info["extends"]) . '_init'; -// $func($a); -// } -// } - if(($_SERVER['REQUEST_METHOD'] === 'POST') && (! $a->error) + if (($_SERVER['REQUEST_METHOD'] === 'POST') && (! $a->error) && (function_exists($a->module . '_post')) && (! x($_POST,'auth-params'))) { call_hooks($a->module . '_mod_post', $_POST); @@ -350,13 +345,13 @@ if($a->module_loaded) { $func($a); } - if((! $a->error) && (function_exists($a->module . '_afterpost'))) { + if ((! $a->error) && (function_exists($a->module . '_afterpost'))) { call_hooks($a->module . '_mod_afterpost',$placeholder); $func = $a->module . '_afterpost'; $func($a); } - if((! $a->error) && (function_exists($a->module . '_content'))) { + if ((! $a->error) && (function_exists($a->module . '_content'))) { $arr = array('content' => $a->page['content']); call_hooks($a->module . '_mod_content', $arr); $a->page['content'] = $arr['content']; @@ -366,7 +361,7 @@ if($a->module_loaded) { $a->page['content'] .= $arr['content']; } - if(function_exists(str_replace('-','_',current_theme()) . '_content_loaded')) { + if (function_exists(str_replace('-','_',current_theme()) . '_content_loaded')) { $func = str_replace('-','_',current_theme()) . '_content_loaded'; $func($a); } @@ -374,98 +369,76 @@ if($a->module_loaded) { /* * Create the page head after setting the language - * and getting any auth credentials + * and getting any auth credentials. * * Moved init_pagehead() and init_page_end() to after * all the module functions have executed so that all - * theme choices made by the modules can take effect + * theme choices made by the modules can take effect. */ $a->init_pagehead(); -/** +/* * Build the page ending -- this is stuff that goes right before * the closing tag */ - $a->init_page_end(); // If you're just visiting, let javascript take you home - -if(x($_SESSION,'visitor_home')) +if (x($_SESSION, 'visitor_home')) { $homebase = $_SESSION['visitor_home']; -elseif(local_user()) +} elseif (local_user()) { $homebase = 'profile/' . $a->user['nickname']; +} -if(isset($homebase)) +if (isset($homebase)) { $a->page['content'] .= ''; +} -// now that we've been through the module content, see if the page reported -// a permission problem and if so, a 403 response would seem to be in order. - -if(stristr( implode("",$_SESSION['sysmsg']), t('Permission denied'))) { +/* + * now that we've been through the module content, see if the page reported + * a permission problem and if so, a 403 response would seem to be in order. + */ +if (stristr(implode("", $_SESSION['sysmsg']), t('Permission denied'))) { header($_SERVER["SERVER_PROTOCOL"] . ' 403 ' . t('Permission denied.')); } -/** - * +/* * Report anything which needs to be communicated in the notification area (before the main body) - * */ - -/*if(x($_SESSION,'sysmsg')) { - $a->page['content'] = "
{$_SESSION['sysmsg']}
\r\n" - . ((x($a->page,'content')) ? $a->page['content'] : ''); - $_SESSION['sysmsg']=""; - unset($_SESSION['sysmsg']); -} -if(x($_SESSION,'sysmsg_info')) { - $a->page['content'] = "
{$_SESSION['sysmsg_info']}
\r\n" - . ((x($a->page,'content')) ? $a->page['content'] : ''); - $_SESSION['sysmsg_info']=""; - unset($_SESSION['sysmsg_info']); -}*/ - - - call_hooks('page_end', $a->page['content']); - -/** - * +/* * Add the navigation (menu) template - * */ - -if($a->module != 'install' && $a->module != 'maintenance') { +if ($a->module != 'install' && $a->module != 'maintenance') { nav($a); } -/** +/* * Add a "toggle mobile" link if we're using a mobile device */ - -if($a->is_mobile || $a->is_tablet) { - if(isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) { +if ($a->is_mobile || $a->is_tablet) { + if (isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) { $link = 'toggle_mobile?address=' . curPageURL(); - } - else { + } else { $link = 'toggle_mobile?off=1&address=' . curPageURL(); } $a->page['footer'] = replace_macros(get_markup_template("toggle_mobile_footer.tpl"), array( - '$toggle_link' => $link, - '$toggle_text' => t('toggle mobile') - )); + '$toggle_link' => $link, + '$toggle_text' => t('toggle mobile') + )); } /** * Build the page - now that we have all the components */ -if(!$a->theme['stylesheet']) +if (!$a->theme['stylesheet']) { $stylesheet = current_theme_url(); -else +} else { $stylesheet = $a->theme['stylesheet']; +} $a->page['htmlhead'] = str_replace('{{$stylesheet}}',$stylesheet,$a->page['htmlhead']); //$a->page['htmlhead'] = replace_macros($a->page['htmlhead'], array('$stylesheet' => $stylesheet)); @@ -478,6 +451,7 @@ if (isset($_GET["mode"]) AND (($_GET["mode"] == "raw") OR ($_GET["mode"] == "min $content = mb_convert_encoding($a->page["content"], 'HTML-ENTITIES', "UTF-8"); + /// @TODO one day, kill those error-surpressing @ stuff, or PHP should ban it @$doc->loadHTML($content); $xpath = new DomXPath($doc); @@ -485,7 +459,6 @@ if (isset($_GET["mode"]) AND (($_GET["mode"] == "raw") OR ($_GET["mode"] == "min $list = $xpath->query("//*[contains(@id,'tread-wrapper-')]"); /* */ foreach ($list as $item) { - $item = $target->importNode($item, true); // And then append it to the target @@ -499,32 +472,30 @@ if (isset($_GET["mode"]) AND ($_GET["mode"] == "raw")) { echo substr($target->saveHTML(), 6, -8); - if (!$a->is_backend()) - session_write_close(); - exit; - + killme(); } $page = $a->page; $profile = $a->profile; -header("X-Friendica-Version: ".FRIENDICA_VERSION); +header("X-Friendica-Version: " . FRIENDICA_VERSION); header("Content-type: text/html; charset=utf-8"); -// We use $_GET["mode"] for special page templates. So we will check if we have -// to load another page template than the default one -// The page templates are located in /view/php/ or in the theme directory +/* + * We use $_GET["mode"] for special page templates. So we will check if we have + * to load another page template than the default one. + * The page templates are located in /view/php/ or in the theme directory. + */ if (isset($_GET["mode"])) { - $template = theme_include($_GET["mode"].'.php'); + $template = theme_include($_GET["mode"] . '.php'); } // If there is no page template use the default page template -if(!$template) { +if (!$template) { $template = theme_include("default.php"); } -require_once($template); +/// @TODO Looks unsafe (remote-inclusion), is maybe not but theme_include() uses file_exists() but does not escape anything +require_once $template; -if (!$a->is_backend()) - session_write_close(); -exit; +killme(); diff --git a/mod/admin.php b/mod/admin.php index cf0714ef9..3ca8ea493 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -2004,22 +2004,22 @@ function admin_page_features_post(App $a) { $features = get_features(false); foreach ($features as $fname => $fdata) { - foreach (array_slice($fdata,1) as $f) { + foreach (array_slice($fdata, 1) as $f) { $feature = $f[0]; - $feature_state = 'feature_'.$feature; - $featurelock = 'featurelock_'.$feature; + $feature_state = 'feature_' . $feature; + $featurelock = 'featurelock_' . $feature; - if (x($_POST[$feature_state])) { - $val = intval($_POST['feature_'.$feature]); + if (x($_POST, $feature_state)) { + $val = intval($_POST[$feature_state]); } else { $val = 0; } set_config('feature',$feature,$val); - if (x($_POST[$featurelock])) { - set_config('feature_lock',$feature,$val); + if (x($_POST, $featurelock)) { + set_config('feature_lock', $feature, $val); } else { - del_config('feature_lock',$feature); + del_config('feature_lock', $feature); } } } diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 7a3882a5b..001fa4468 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -586,17 +586,18 @@ function dfrn_confirm_post(App $a, $handsfree = null) { dbesc($decrypted_source_url), intval($local_uid) ); - if(! count($ret)) { - if(strstr($decrypted_source_url,'http:')) + if (!dbm::is_result($ret)) { + if (strstr($decrypted_source_url,'http:')) { $newurl = str_replace('http:','https:',$decrypted_source_url); - else + } else { $newurl = str_replace('https:','http:',$decrypted_source_url); + } $ret = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1", dbesc($newurl), intval($local_uid) ); - if(! count($ret)) { + if (!dbm::is_result($ret)) { // this is either a bogus confirmation (?) or we deleted the original introduction. $message = t('Contact record was not found for you on our site.'); xml_status(3,$message); @@ -611,7 +612,7 @@ function dfrn_confirm_post(App $a, $handsfree = null) { $foreign_pubkey = $ret[0]['site-pubkey']; $dfrn_record = $ret[0]['id']; - if(! $foreign_pubkey) { + if (! $foreign_pubkey) { $message = sprintf( t('Site public key not available in contact record for URL %s.'), $newurl); xml_status(3,$message); } @@ -619,7 +620,7 @@ function dfrn_confirm_post(App $a, $handsfree = null) { $decrypted_dfrn_id = ""; openssl_public_decrypt($dfrn_id,$decrypted_dfrn_id,$foreign_pubkey); - if(strlen($aes_key)) { + if (strlen($aes_key)) { $decrypted_aes_key = ""; openssl_private_decrypt($aes_key,$decrypted_aes_key,$my_prvkey); $dfrn_pubkey = openssl_decrypt($public_key,'AES-256-CBC',$decrypted_aes_key); diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 8df462e58..b42ef9b70 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -28,14 +28,14 @@ function dfrn_notify_post(App $a) { $prv = (($page == 2) ? 1 : 0); $writable = (-1); - if($dfrn_version >= 2.21) { + if ($dfrn_version >= 2.21) { $writable = (($perm === 'rw') ? 1 : 0); } $direction = (-1); - if(strpos($dfrn_id,':') == 1) { - $direction = intval(substr($dfrn_id,0,1)); - $dfrn_id = substr($dfrn_id,2); + if (strpos($dfrn_id, ':') == 1) { + $direction = intval(substr($dfrn_id, 0, 1)); + $dfrn_id = substr($dfrn_id, 2); } $r = q("SELECT * FROM `challenge` WHERE `dfrn-id` = '%s' AND `challenge` = '%s' LIMIT 1", @@ -70,9 +70,11 @@ function dfrn_notify_post(App $a) { break; // NOTREACHED } - // be careful - $importer will contain both the contact information for the contact - // sending us the post, and also the user information for the person receiving it. - // since they are mixed together, it is easy to get them confused. + /* + * be careful - $importer will contain both the contact information for the contact + * sending us the post, and also the user information for the person receiving it. + * since they are mixed together, it is easy to get them confused. + */ $r = q("SELECT `contact`.*, `contact`.`uid` AS `importer_uid`, `contact`.`pubkey` AS `cpubkey`, @@ -100,15 +102,16 @@ function dfrn_notify_post(App $a) { logger("Remote rino version: ".$rino_remote." for ".$importer["url"], LOGGER_DEBUG); - if((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $forum) || ($importer['prv'] != $prv)) { + if ((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $forum) || ($importer['prv'] != $prv)) { q("UPDATE `contact` SET `writable` = %d, forum = %d, prv = %d WHERE `id` = %d", intval(($writable == (-1)) ? $importer['writable'] : $writable), intval($forum), intval($prv), intval($importer['id']) ); - if($writable != (-1)) + if ($writable != (-1)) { $importer['writable'] = $writable; + } $importer['forum'] = $page; } @@ -120,7 +123,7 @@ function dfrn_notify_post(App $a) { logger('dfrn_notify: received notify from ' . $importer['name'] . ' for ' . $importer['username']); logger('dfrn_notify: data: ' . $data, LOGGER_DATA); - if($dissolve == 1) { + if ($dissolve == 1) { /* * Relationship is dissolved permanently @@ -133,19 +136,12 @@ function dfrn_notify_post(App $a) { } - - // If we are setup as a soapbox we aren't accepting input from this person - // This behaviour is deactivated since it really doesn't make sense to even disallow comments - // The check if someone is a friend or simply a follower is done in a later place so it needn't to be done here - //if($importer['page-flags'] == PAGE_SOAPBOX) - // xml_status(0); - - $rino = get_config('system','rino_encrypt'); + $rino = get_config('system', 'rino_encrypt'); $rino = intval($rino); - logger("Local rino version: ". $rino, LOGGER_DEBUG); + logger("Local rino version: " . $rino, LOGGER_DEBUG); - if(strlen($key)) { + if (strlen($key)) { // if local rino is lower than remote rino, abort: should not happen! // but only for $remote_rino > 1, because old code did't send rino version @@ -158,20 +154,17 @@ function dfrn_notify_post(App $a) { logger('rino: md5 raw key: ' . md5($rawkey)); $final_key = ''; - if($dfrn_version >= 2.1) { - if((($importer['duplex']) && strlen($importer['cprvkey'])) || (! strlen($importer['cpubkey']))) { - openssl_private_decrypt($rawkey,$final_key,$importer['cprvkey']); + if ($dfrn_version >= 2.1) { + if ((($importer['duplex']) && strlen($importer['cprvkey'])) || (! strlen($importer['cpubkey']))) { + openssl_private_decrypt($rawkey, $final_key, $importer['cprvkey']); + } else { + openssl_public_decrypt($rawkey, $final_key, $importer['cpubkey']); } - else { - openssl_public_decrypt($rawkey,$final_key,$importer['cpubkey']); - } - } - else { - if((($importer['duplex']) && strlen($importer['cpubkey'])) || (! strlen($importer['cprvkey']))) { - openssl_public_decrypt($rawkey,$final_key,$importer['cpubkey']); - } - else { - openssl_private_decrypt($rawkey,$final_key,$importer['cprvkey']); + } else { + if ((($importer['duplex']) && strlen($importer['cpubkey'])) || (! strlen($importer['cprvkey']))) { + openssl_public_decrypt($rawkey, $final_key, $importer['cpubkey']); + } else { + openssl_private_decrypt($rawkey, $final_key, $importer['cprvkey']); } } @@ -180,27 +173,31 @@ function dfrn_notify_post(App $a) { switch($rino_remote) { case 0: case 1: - // we got a key. old code send only the key, without RINO version. - // we assume RINO 1 if key and no RINO version - $data = dfrn::aes_decrypt(hex2bin($data),$final_key); + /* + *we got a key. old code send only the key, without RINO version. + * we assume RINO 1 if key and no RINO version + */ + $data = dfrn::aes_decrypt(hex2bin($data), $final_key); break; case 2: try { - $data = Crypto::decrypt(hex2bin($data),$final_key); + $data = Crypto::decrypt(hex2bin($data), $final_key); } catch (InvalidCiphertext $ex) { // VERY IMPORTANT - // Either: - // 1. The ciphertext was modified by the attacker, - // 2. The key is wrong, or - // 3. $ciphertext is not a valid ciphertext or was corrupted. - // Assume the worst. + /* + * Either: + * 1. The ciphertext was modified by the attacker, + * 2. The key is wrong, or + * 3. $ciphertext is not a valid ciphertext or was corrupted. + * Assume the worst. + */ logger('The ciphertext has been tampered with!'); - xml_status(0,'The ciphertext has been tampered with!'); + xml_status(0, 'The ciphertext has been tampered with!'); } catch (Ex\CryptoTestFailed $ex) { logger('Cannot safely perform dencryption'); - xml_status(0,'CryptoTestFailed'); + xml_status(0, 'CryptoTestFailed'); } catch (Ex\CannotPerformOperation $ex) { logger('Cannot safely perform decryption'); - xml_status(0,'Cannot safely perform decryption'); + xml_status(0, 'Cannot safely perform decryption'); } break; default: @@ -223,8 +220,10 @@ function dfrn_notify_content(App $a) { if(x($_GET,'dfrn_id')) { - // initial communication from external contact, $direction is their direction. - // If this is a duplex communication, ours will be the opposite. + /* + * initial communication from external contact, $direction is their direction. + * If this is a duplex communication, ours will be the opposite. + */ $dfrn_id = notags(trim($_GET['dfrn_id'])); $dfrn_version = (float) $_GET['dfrn_version']; @@ -288,42 +287,43 @@ function dfrn_notify_content(App $a) { logger("Remote rino version: ".$rino_remote." for ".$r[0]["url"], LOGGER_DEBUG); - $challenge = ''; + $challenge = ''; $encrypted_id = ''; - $id_str = $my_id . '.' . mt_rand(1000,9999); + $id_str = $my_id . '.' . mt_rand(1000,9999); $prv_key = trim($r[0]['prvkey']); $pub_key = trim($r[0]['pubkey']); - $dplx = intval($r[0]['duplex']); + $dplx = intval($r[0]['duplex']); - if((($dplx) && (strlen($prv_key))) || ((strlen($prv_key)) && (!(strlen($pub_key))))) { - openssl_private_encrypt($hash,$challenge,$prv_key); - openssl_private_encrypt($id_str,$encrypted_id,$prv_key); - } - elseif(strlen($pub_key)) { - openssl_public_encrypt($hash,$challenge,$pub_key); - openssl_public_encrypt($id_str,$encrypted_id,$pub_key); - } - else + if ((($dplx) && (strlen($prv_key))) || ((strlen($prv_key)) && (!(strlen($pub_key))))) { + openssl_private_encrypt($hash, $challenge, $prv_key); + openssl_private_encrypt($id_str, $encrypted_id, $prv_key); + } elseif (strlen($pub_key)) { + openssl_public_encrypt($hash, $challenge, $pub_key); + openssl_public_encrypt($id_str, $encrypted_id, $pub_key); + } else { + /// @TODO these kind of else-blocks are making the code harder to understand $status = 1; + } $challenge = bin2hex($challenge); $encrypted_id = bin2hex($encrypted_id); - $rino = get_config('system','rino_encrypt'); + $rino = get_config('system', 'rino_encrypt'); $rino = intval($rino); logger("Local rino version: ". $rino, LOGGER_DEBUG); // if requested rino is lower than enabled local rino, lower local rino version // if requested rino is higher than enabled local rino, reply with local rino - if ($rino_remote < $rino) $rino = $rino_remote; + if ($rino_remote < $rino) { + $rino = $rino_remote; + } if((($r[0]['rel']) && ($r[0]['rel'] != CONTACT_IS_SHARING)) || ($r[0]['page-flags'] == PAGE_COMMUNITY)) { $perm = 'rw'; - } - else { + } else { $perm = 'r'; } diff --git a/mod/install.php b/mod/install.php index ce229244c..fbd296a9d 100755 --- a/mod/install.php +++ b/mod/install.php @@ -460,9 +460,6 @@ function check_funcs(&$checks) { $ck_funcs[6]['status'] = false; $ck_funcs[6]['help'] = t('Error, XML PHP module required but not installed.'); } - - /*if((x($_SESSION,'sysmsg')) && is_array($_SESSION['sysmsg']) && count($_SESSION['sysmsg'])) - notice( t('Please see the file "INSTALL.txt".') . EOL);*/ } diff --git a/mod/item.php b/mod/item.php index 6da9ce88e..8bf922d97 100644 --- a/mod/item.php +++ b/mod/item.php @@ -1,43 +1,44 @@ 1); echo json_encode($json); @@ -45,36 +46,33 @@ function item_post(App $a) { } call_hooks('post_local_start', $_REQUEST); -// logger('postinput ' . file_get_contents('php://input')); + // logger('postinput ' . file_get_contents('php://input')); logger('postvars ' . print_r($_REQUEST,true), LOGGER_DATA); - $api_source = ((x($_REQUEST,'api_source') && $_REQUEST['api_source']) ? true : false); + $api_source = ((x($_REQUEST, 'api_source') && $_REQUEST['api_source']) ? true : false); - $message_id = ((x($_REQUEST,'message_id') && $api_source) ? strip_tags($_REQUEST['message_id']) : ''); + $message_id = ((x($_REQUEST, 'message_id') && $api_source) ? strip_tags($_REQUEST['message_id']) : ''); - $return_path = ((x($_REQUEST,'return')) ? $_REQUEST['return'] : ''); - $preview = ((x($_REQUEST,'preview')) ? intval($_REQUEST['preview']) : 0); + $return_path = ((x($_REQUEST, 'return')) ? $_REQUEST['return'] : ''); + $preview = ((x($_REQUEST, 'preview')) ? intval($_REQUEST['preview']) : 0); - - // Check for doubly-submitted posts, and reject duplicates - // Note that we have to ignore previews, otherwise nothing will post - // after it's been previewed - if (!$preview && x($_REQUEST['post_id_random'])) { - if (x($_SESSION['post-random']) && $_SESSION['post-random'] == $_REQUEST['post_id_random']) { + /* + * Check for doubly-submitted posts, and reject duplicates + * Note that we have to ignore previews, otherwise nothing will post + * after it's been previewed + */ + if (!$preview && x($_REQUEST, 'post_id_random')) { + if (x($_SESSION, 'post-random') && $_SESSION['post-random'] == $_REQUEST['post_id_random']) { logger("item post: duplicate post", LOGGER_DEBUG); item_post_return(App::get_baseurl(), $api_source, $return_path); - } - else { + } else { $_SESSION['post-random'] = $_REQUEST['post_id_random']; } } - /** - * Is this a reply to something? - */ - - $parent = ((x($_REQUEST,'parent')) ? intval($_REQUEST['parent']) : 0); - $parent_uri = ((x($_REQUEST,'parent_uri')) ? trim($_REQUEST['parent_uri']) : ''); + // Is this a reply to something? + $parent = ((x($_REQUEST, 'parent')) ? intval($_REQUEST['parent']) : 0); + $parent_uri = ((x($_REQUEST, 'parent_uri')) ? trim($_REQUEST['parent_uri']) : ''); $parent_item = null; $parent_contact = null; @@ -87,7 +85,7 @@ function item_post(App $a) { $objecttype = ACTIVITY_OBJ_COMMENT; - if (! x($_REQUEST,'type')) { + if (! x($_REQUEST, 'type')) { $_REQUEST['type'] = 'net-comment'; } @@ -116,7 +114,7 @@ function item_post(App $a) { if (! dbm::is_result($r)) { notice( t('Unable to locate original post.') . EOL); - if (x($_REQUEST,'return')) { + if (x($_REQUEST, 'return')) { goaway($return_path); } killme(); @@ -133,8 +131,9 @@ function item_post(App $a) { intval($parent_item['contact-id']), intval($uid) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $parent_contact = $r[0]; + } // If the contact id doesn't fit with the contact, then set the contact to null $thrparent = q("SELECT `author-link`, `network` FROM `item` WHERE `uri` = '%s' LIMIT 1", dbesc($thr_parent)); @@ -143,7 +142,7 @@ function item_post(App $a) { $parent_contact = get_contact_details_by_url($thrparent[0]["author-link"]); if (!isset($parent_contact["nick"])) { - require_once("include/Scrape.php"); + require_once 'include/Scrape.php'; $probed_contact = probe_url($thrparent[0]["author-link"]); if ($probed_contact["network"] != NETWORK_FEED) { $parent_contact = $probed_contact; @@ -153,22 +152,26 @@ function item_post(App $a) { $parent_contact["addr"] = $probed_contact["addr"]; } } - logger('no contact found: '.print_r($thrparent, true), LOGGER_DEBUG); - } else - logger('parent contact: '.print_r($parent_contact, true), LOGGER_DEBUG); + logger('no contact found: ' . print_r($thrparent, true), LOGGER_DEBUG); + } else { + logger('parent contact: ' . print_r($parent_contact, true), LOGGER_DEBUG); + } - if ($parent_contact["nick"] == "") + if ($parent_contact["nick"] == "") { $parent_contact["nick"] = $parent_contact["name"]; + } } } - if($parent) logger('mod_item: item_post parent=' . $parent); + if ($parent) { + logger('mod_item: item_post parent=' . $parent); + } - $profile_uid = ((x($_REQUEST,'profile_uid')) ? intval($_REQUEST['profile_uid']) : 0); - $post_id = ((x($_REQUEST,'post_id')) ? intval($_REQUEST['post_id']) : 0); - $app = ((x($_REQUEST,'source')) ? strip_tags($_REQUEST['source']) : ''); - $extid = ((x($_REQUEST,'extid')) ? strip_tags($_REQUEST['extid']) : ''); - $object = ((x($_REQUEST,'object')) ? $_REQUEST['object'] : ''); + $profile_uid = ((x($_REQUEST, 'profile_uid')) ? intval($_REQUEST['profile_uid']) : 0); + $post_id = ((x($_REQUEST, 'post_id')) ? intval($_REQUEST['post_id']) : 0); + $app = ((x($_REQUEST, 'source')) ? strip_tags($_REQUEST['source']) : ''); + $extid = ((x($_REQUEST, 'extid')) ? strip_tags($_REQUEST['extid']) : ''); + $object = ((x($_REQUEST, 'object')) ? $_REQUEST['object'] : ''); // Check for multiple posts with the same message id (when the post was created via API) if (($message_id != '') AND ($profile_uid != 0)) { @@ -189,22 +192,23 @@ function item_post(App $a) { // First check that the parent exists and it is a wall item. - if((x($_REQUEST,'commenter')) && ((! $parent) || (! $parent_item['wall']))) { - notice( t('Permission denied.') . EOL) ; - if(x($_REQUEST,'return')) + if ((x($_REQUEST, 'commenter')) && ((! $parent) || (! $parent_item['wall']))) { + notice(t('Permission denied.') . EOL) ; + if (x($_REQUEST, 'return')) { goaway($return_path); + } killme(); } - // Now check that it is a page_type of PAGE_BLOG, and that valid personal details - // have been provided, and run any anti-spam plugins - - - - if((! can_write_wall($a,$profile_uid)) && (! $allow_moderated)) { - notice( t('Permission denied.') . EOL) ; - if(x($_REQUEST,'return')) + /* + * Now check that it is a page_type of PAGE_BLOG, and that valid personal details + * have been provided, and run any anti-spam plugins + */ + if ((! can_write_wall($a, $profile_uid)) && (! $allow_moderated)) { + notice(t('Permission denied.') . EOL) ; + if (x($_REQUEST, 'return')) { goaway($return_path); + } killme(); } @@ -213,7 +217,7 @@ function item_post(App $a) { $orig_post = null; - if($post_id) { + if ($post_id) { $i = q("SELECT * FROM `item` WHERE `uid` = %d AND `id` = %d LIMIT 1", intval($profile_uid), intval($post_id) @@ -229,10 +233,11 @@ function item_post(App $a) { $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($profile_uid) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $user = $r[0]; + } - if($orig_post) { + if ($orig_post) { $str_group_allow = $orig_post['allow_gid']; $str_contact_allow = $orig_post['allow_cid']; $str_group_deny = $orig_post['deny_gid']; @@ -254,21 +259,22 @@ function item_post(App $a) { } else { - // if coming from the API and no privacy settings are set, - // use the user default permissions - as they won't have - // been supplied via a form. - - if(($api_source) - && (! array_key_exists('contact_allow',$_REQUEST)) - && (! array_key_exists('group_allow',$_REQUEST)) - && (! array_key_exists('contact_deny',$_REQUEST)) - && (! array_key_exists('group_deny',$_REQUEST))) { + /* + * if coming from the API and no privacy settings are set, + * use the user default permissions - as they won't have + * been supplied via a form. + */ + /// @TODO use x($_REQUEST, 'foo') here + if (($api_source) + && (! array_key_exists('contact_allow', $_REQUEST)) + && (! array_key_exists('group_allow', $_REQUEST)) + && (! array_key_exists('contact_deny', $_REQUEST)) + && (! array_key_exists('group_deny', $_REQUEST))) { $str_group_allow = $user['allow_gid']; $str_contact_allow = $user['allow_cid']; $str_group_deny = $user['deny_gid']; $str_contact_deny = $user['deny_cid']; - } - else { + } else { // use the posted permissions @@ -287,26 +293,25 @@ function item_post(App $a) { $network = notags(trim($_REQUEST['network'])); $guid = get_guid(32); - item_add_language_opt($_REQUEST); $postopts = $_REQUEST['postopts'] ? $_REQUEST['postopts'] : ""; - $private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0); - - if($user['hidewall']) + if ($user['hidewall']) { $private = 2; + } // If this is a comment, set the permissions from the parent. - if($parent_item) { + if ($parent_item) { // for non native networks use the network of the original post as network of the item if (($parent_item['network'] != NETWORK_DIASPORA) AND ($parent_item['network'] != NETWORK_OSTATUS) - AND ($network == "")) + AND ($network == "")) { $network = $parent_item['network']; + } $str_contact_allow = $parent_item['allow_cid']; $str_group_allow = $parent_item['allow_gid']; @@ -315,32 +320,36 @@ function item_post(App $a) { $private = $parent_item['private']; } - $pubmail_enable = ((x($_REQUEST,'pubmail_enable') && intval($_REQUEST['pubmail_enable']) && (! $private)) ? 1 : 0); + $pubmail_enable = ((x($_REQUEST, 'pubmail_enable') && intval($_REQUEST['pubmail_enable']) && (! $private)) ? 1 : 0); // if using the API, we won't see pubmail_enable - figure out if it should be set - if($api_source && $profile_uid && $profile_uid == local_user() && (! $private)) { - $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1); - if(! $mail_disabled) { + if ($api_source && $profile_uid && $profile_uid == local_user() && (! $private)) { + $mail_disabled = ((function_exists('imap_open') && (! get_config('system', 'imap_disabled'))) ? 0 : 1); + if (! $mail_disabled) { + /// @TODO Check if only pubmail is loaded, * loads all columns $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1", intval(local_user()) ); - if (dbm::is_result($r) && intval($r[0]['pubmail'])) + if (dbm::is_result($r) && intval($r[0]['pubmail'])) { $pubmail_enabled = true; + } } } - if(! strlen($body)) { - if($preview) + if (! strlen($body)) { + if ($preview) { killme(); - info( t('Empty post discarded.') . EOL ); - if(x($_REQUEST,'return')) + } + info(t('Empty post discarded.') . EOL ); + if (x($_REQUEST, 'return')) { goaway($return_path); + } killme(); } } - if(strlen($categories)) { + if (strlen($categories)) { // get the "fileas" tags for this post $filedas = file_tag_file_to_list($categories, 'file'); } @@ -348,7 +357,7 @@ function item_post(App $a) { $categories_old = $categories; $categories = file_tag_list_to_file(trim($_REQUEST['category']), 'category'); $categories_new = $categories; - if(strlen($filedas)) { + if (strlen($filedas)) { // append the fileas stuff to the new categories list $categories .= file_tag_list_to_file($filedas, 'file'); } @@ -359,21 +368,20 @@ function item_post(App $a) { $self = false; $contact_id = 0; - if((local_user()) && (local_user() == $profile_uid)) { + if ((local_user()) && (local_user() == $profile_uid)) { $self = true; $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1", intval($_SESSION['uid'])); - } - elseif(remote_user()) { - if(is_array($_SESSION['remote'])) { - foreach($_SESSION['remote'] as $v) { - if($v['uid'] == $profile_uid) { + } elseif(remote_user()) { + if (x($_SESSION, 'remote') && is_array($_SESSION['remote'])) { + foreach ($_SESSION['remote'] as $v) { + if ($v['uid'] == $profile_uid) { $contact_id = $v['cid']; break; } } } - if($contact_id) { + if ($contact_id) { $r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", intval($contact_id) ); @@ -387,30 +395,28 @@ function item_post(App $a) { // get contact info for owner - if($profile_uid == local_user()) { + if ($profile_uid == local_user()) { $contact_record = $author; - } - else { + } else { $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1", intval($profile_uid) ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $contact_record = $r[0]; + } } $post_type = notags(trim($_REQUEST['type'])); - if($post_type === 'net-comment') { - if($parent_item !== null) { - if($parent_item['wall'] == 1) - $post_type = 'wall-comment'; - else - $post_type = 'remote-comment'; + if ($post_type === 'net-comment' && $parent_item !== null) { + if ($parent_item['wall'] == 1) { + $post_type = 'wall-comment'; + } else { + $post_type = 'remote-comment'; } } - /** - * + /* * When a photo was uploaded into the message using the (profile wall) ajax * uploader, The permissions are initially set to disallow anybody but the * owner from seeing it. This is because the permissions may not yet have been @@ -418,14 +424,13 @@ function item_post(App $a) { * appropriately. But we didn't know the final permissions on the post until * now. So now we'll look for links of uploaded messages that are in the * post and set them to the same permissions as the post itself. - * */ $match = null; - if((! $preview) && preg_match_all("/\[img([\=0-9x]*?)\](.*?)\[\/img\]/",$body,$match)) { + if ((! $preview) && preg_match_all("/\[img([\=0-9x]*?)\](.*?)\[\/img\]/",$body,$match)) { $images = $match[2]; - if(count($images)) { + if (count($images)) { $objecttype = ACTIVITY_OBJ_IMAGE; @@ -466,16 +471,15 @@ function item_post(App $a) { } - /** + /* * Next link in any attachment references we find in the post. */ - $match = false; - if((! $preview) && preg_match_all("/\[attachment\](.*?)\[\/attachment\]/",$body,$match)) { + if ((! $preview) && preg_match_all("/\[attachment\](.*?)\[\/attachment\]/", $body, $match)) { $attaches = $match[1]; - if(count($attaches)) { - foreach($attaches as $attach) { + if (count($attaches)) { + foreach ($attaches as $attach) { $r = q("SELECT * FROM `attach` WHERE `uid` = %d AND `id` = %d LIMIT 1", intval($profile_uid), intval($attach) @@ -499,7 +503,7 @@ function item_post(App $a) { $bookmark = 0; $data = get_attachment_data($body); - if (preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", $body, $match, PREG_SET_ORDER) OR isset($data["type"])) { + if (preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", $body, $match, PREG_SET_ORDER) OR isset($data["type"])) { $objecttype = ACTIVITY_OBJ_BOOKMARK; $bookmark = 1; } @@ -507,49 +511,42 @@ function item_post(App $a) { $body = bb_translate_video($body); - /** - * Fold multi-line [code] sequences - */ - - $body = preg_replace('/\[\/code\]\s*\[code\]/ism',"\n",$body); - - $body = scale_external_images($body,false); + // Fold multi-line [code] sequences + $body = preg_replace('/\[\/code\]\s*\[code\]/ism', "\n", $body); + $body = scale_external_images($body, false); // Setting the object type if not defined before if (!$objecttype) { $objecttype = ACTIVITY_OBJ_NOTE; // Default value - require_once("include/plaintext.php"); + require_once 'include/plaintext.php'; $objectdata = get_attached_data($body); - if ($post["type"] == "link") + if ($post["type"] == "link") { $objecttype = ACTIVITY_OBJ_BOOKMARK; - elseif ($post["type"] == "video") + } elseif ($post["type"] == "video") { $objecttype = ACTIVITY_OBJ_VIDEO; - elseif ($post["type"] == "photo") + } elseif ($post["type"] == "photo") { $objecttype = ACTIVITY_OBJ_IMAGE; + } } - /** - * Look for any tags and linkify them - */ - + // Look for any tags and linkify them $str_tags = ''; $inform = ''; - $tags = get_tags($body); - /** + /* * add a statusnet style reply tag if the original post was from there * and we are replying, and there isn't one already */ if ($parent AND ($parent_contact['network'] == NETWORK_OSTATUS)) { - $contact = '@[url='.$parent_contact['url'].']'.$parent_contact['nick'].'[/url]'; + $contact = '@[url=' . $parent_contact['url'] . ']' . $parent_contact['nick'] . '[/url]'; - if (!in_array($contact,$tags)) { - $body = $contact.' '.$body; + if (!in_array($contact, $tags)) { + $body = $contact . ' ' . $body; $tags[] = $contact; } @@ -557,39 +554,44 @@ function item_post(App $a) { $toplevel_parent = q("SELECT `contact`.* FROM `contact` INNER JOIN `item` ON `item`.`contact-id` = `contact`.`id` AND `contact`.`url` = `item`.`author-link` WHERE `item`.`id` = `item`.`parent` AND `item`.`parent` = %d", intval($parent)); - if ($toplevel_parent) - $toplevel_contact = '@'.$toplevel_parent[0]['nick'].'+'.$toplevel_parent[0]['id']; - else { + if (dbm::is_result($toplevel_parent)) { + $toplevel_contact = '@' . $toplevel_parent[0]['nick'] . '+' . $toplevel_parent[0]['id']; + } else { $toplevel_parent = q("SELECT `author-link`, `author-name` FROM `item` WHERE `id` = `parent` AND `parent` = %d", intval($parent)); - $toplevel_contact = '@[url='.$toplevel_parent[0]['author-link'].']'.$toplevel_parent[0]['author-name'].'[/url]'; + $toplevel_contact = '@[url=' . $toplevel_parent[0]['author-link'] . ']' . $toplevel_parent[0]['author-name'] . '[/url]'; } - if (!in_array($toplevel_contact,$tags)) + if (!in_array($toplevel_contact, $tags)) { $tags[] = $toplevel_contact; + } } $tagged = array(); $private_forum = false; - if(count($tags)) { - foreach($tags as $tag) { + if (count($tags)) { + foreach ($tags as $tag) { - if(strpos($tag,'#') === 0) + if (strpos($tag, '#') === 0) { continue; + } - // If we already tagged 'Robert Johnson', don't try and tag 'Robert'. - // Robert Johnson should be first in the $tags array - + /* + * If we already tagged 'Robert Johnson', don't try and tag 'Robert'. + * Robert Johnson should be first in the $tags array + */ $fullnametagged = false; - for($x = 0; $x < count($tagged); $x ++) { - if(stristr($tagged[$x],$tag . ' ')) { + /// @TODO $tagged is initialized above if() block and is not filled, maybe old-lost code? + foreach ($tagged as $nextTag) { + if (stristr($nextTag, $tag . ' ')) { $fullnametagged = true; break; } } - if($fullnametagged) + if ($fullnametagged) { continue; + } $success = handle_tag($a, $body, $inform, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag, $network); if ($success['replaced']) { @@ -647,7 +649,7 @@ function item_post(App $a) { // even if the post arrived via API we are considering that it // originated on this site by default for determining relayability. - $origin = ((x($_REQUEST,'origin')) ? intval($_REQUEST['origin']) : 1); + $origin = ((x($_REQUEST, 'origin')) ? intval($_REQUEST['origin']) : 1); $notify_type = (($parent) ? 'comment-new' : 'wall-new' ); @@ -668,11 +670,11 @@ function item_post(App $a) { $datarray['owner-name'] = $contact_record['name']; $datarray['owner-link'] = $contact_record['url']; $datarray['owner-avatar'] = $contact_record['thumb']; - $datarray["owner-id"] = get_contact($datarray["owner-link"], 0); + $datarray['owner-id'] = get_contact($datarray['owner-link'], 0); $datarray['author-name'] = $author['name']; $datarray['author-link'] = $author['url']; $datarray['author-avatar'] = $author['thumb']; - $datarray["author-id"] = get_contact($datarray["author-link"], 0); + $datarray['author-id'] = get_contact($datarray['author-link'], 0); $datarray['created'] = datetime_convert(); $datarray['edited'] = datetime_convert(); $datarray['commented'] = datetime_convert(); @@ -707,31 +709,30 @@ function item_post(App $a) { "photo" => $datarray['author-avatar'], "name" => $datarray['author-name'])); $datarray['object'] = $object; - /** + /* * These fields are for the convenience of plugins... * 'self' if true indicates the owner is posting on their own wall * If parent is 0 it is a top-level post. */ - $datarray['parent'] = $parent; $datarray['self'] = $self; // $datarray['prvnets'] = $user['prvnets']; $datarray['parent-uri'] = ($parent == 0) ? $uri : $parent_item['uri']; - $datarray['plink'] = App::get_baseurl().'/display/'.urlencode($datarray['guid']); + $datarray['plink'] = App::get_baseurl() . '/display/' . urlencode($datarray['guid']); $datarray['last-child'] = 1; $datarray['visible'] = 1; - if($orig_post) - $datarray['edit'] = true; + if ($orig_post) { + $datarray['edit'] = true; + } // Search for hashtags item_body_set_hashtags($datarray); // preview mode - prepare the body for display and send it via json - - if($preview) { - require_once('include/conversation.php'); + if ($preview) { + require_once 'include/conversation.php'; // We set the datarray ID to -1 because in preview mode the dataray // doesn't have an ID. $datarray["id"] = -1; @@ -741,17 +742,16 @@ function item_post(App $a) { killme(); } - call_hooks('post_local',$datarray); - if(x($datarray,'cancel')) { + if (x($datarray, 'cancel')) { logger('mod_item: post cancelled by plugin.'); - if($return_path) { + if ($return_path) { goaway($return_path); } $json = array('cancel' => 1); - if (x($_REQUEST,'jsreload') && strlen($_REQUEST['jsreload'])) { + if (x($_REQUEST, 'jsreload') && strlen($_REQUEST['jsreload'])) { $json['reload'] = App::get_baseurl() . '/' . $_REQUEST['jsreload']; } @@ -762,7 +762,7 @@ function item_post(App $a) { // Fill the cache field put_item_in_cache($datarray); - if($orig_post) { + if ($orig_post) { $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `attach` = '%s', `file` = '%s', `rendered-html` = '%s', `rendered-hash` = '%s', `edited` = '%s', `changed` = '%s' WHERE `id` = %d AND `uid` = %d", dbesc($datarray['title']), dbesc($datarray['body']), @@ -785,13 +785,14 @@ function item_post(App $a) { file_tag_update_pconfig($uid,$categories_old,$categories_new,'category'); proc_run(PRIORITY_HIGH, "include/notifier.php", 'edit_post', $post_id); - if((x($_REQUEST,'return')) && strlen($return_path)) { + if ((x($_REQUEST, 'return')) && strlen($return_path)) { logger('return: ' . $return_path); goaway($return_path); } killme(); - } else + } else { $post_id = 0; + } q("COMMIT"); q("START TRANSACTION;"); @@ -869,7 +870,7 @@ function item_post(App $a) { dbesc($datarray['plink']), intval($datarray['last-child']), intval($datarray['visible']) - ); + ); if (dbm::is_result($r)) { $r = q("SELECT LAST_INSERT_ID() AS `item-id`"); @@ -900,7 +901,7 @@ function item_post(App $a) { // update filetags in pconfig file_tag_update_pconfig($uid,$categories_old,$categories_new,'category'); - if($parent) { + if ($parent) { // This item is the last leaf and gets the comment box, clear any ancestors $r = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent` = %d AND `last-child` AND `id` != %d", @@ -916,7 +917,7 @@ function item_post(App $a) { intval($parent) ); - if($contact_record != $author) { + if ($contact_record != $author) { notification(array( 'type' => NOTIFY_COMMENT, 'notify_flags' => $user['notify-flags'], @@ -925,7 +926,7 @@ function item_post(App $a) { 'to_email' => $user['email'], 'uid' => $user['uid'], 'item' => $datarray, - 'link' => App::get_baseurl().'/display/'.urlencode($datarray['guid']), + 'link' => App::get_baseurl().'/display/'.urlencode($datarray['guid']), 'source_name' => $datarray['author-name'], 'source_link' => $datarray['author-link'], 'source_photo' => $datarray['author-avatar'], @@ -948,7 +949,7 @@ function item_post(App $a) { intval($parent), intval($post_id)); - if($contact_record != $author) { + if ($contact_record != $author) { notification(array( 'type' => NOTIFY_WALL, 'notify_flags' => $user['notify-flags'], @@ -957,7 +958,7 @@ function item_post(App $a) { 'to_email' => $user['email'], 'uid' => $user['uid'], 'item' => $datarray, - 'link' => App::get_baseurl().'/display/'.urlencode($datarray['guid']), + 'link' => App::get_baseurl().'/display/'.urlencode($datarray['guid']), 'source_name' => $datarray['author-name'], 'source_link' => $datarray['author-link'], 'source_photo' => $datarray['author-avatar'], @@ -969,26 +970,27 @@ function item_post(App $a) { call_hooks('post_local_end', $datarray); - if(strlen($emailcc) && $profile_uid == local_user()) { + if (strlen($emailcc) && $profile_uid == local_user()) { $erecips = explode(',', $emailcc); - if(count($erecips)) { - foreach($erecips as $recip) { + if (count($erecips)) { + foreach ($erecips as $recip) { $addr = trim($recip); - if(! strlen($addr)) + if (! strlen($addr)) { continue; - $disclaimer = '
' . sprintf( t('This message was sent to you by %s, a member of the Friendica social network.'),$a->user['username']) + } + $disclaimer = '
' . sprintf( t('This message was sent to you by %s, a member of the Friendica social network.'), $a->user['username']) . '
'; $disclaimer .= sprintf( t('You may visit them online at %s'), App::get_baseurl() . '/profile/' . $a->user['nickname']) . EOL; $disclaimer .= t('Please contact the sender by replying to this post if you do not wish to receive these messages.') . EOL; if (!$datarray['title']=='') { - $subject = email_header_encode($datarray['title'],'UTF-8'); + $subject = email_header_encode($datarray['title'], 'UTF-8'); } else { - $subject = email_header_encode('[Friendica]' . ' ' . sprintf( t('%s posted an update.'),$a->user['username']),'UTF-8'); + $subject = email_header_encode('[Friendica]' . ' ' . sprintf( t('%s posted an update.'), $a->user['username']), 'UTF-8'); } $link = '' . $a->user['username'] . '

'; $html = prepare_body($datarray); $message = '' . $link . $html . $disclaimer . ''; - include_once('include/html2plain.php'); + include_once 'include/html2plain.php'; $params = array ( 'fromName' => $a->user['username'], 'fromEmail' => $a->user['email'], @@ -1032,15 +1034,16 @@ function item_post(App $a) { function item_post_return($baseurl, $api_source, $return_path) { // figure out how to return, depending on from whence we came - if($api_source) + if ($api_source) { return; + } if ($return_path) { goaway($return_path); } $json = array('success' => 1); - if (x($_REQUEST,'jsreload') && strlen($_REQUEST['jsreload'])) { + if (x($_REQUEST, 'jsreload') && strlen($_REQUEST['jsreload'])) { $json['reload'] = $baseurl . '/' . $_REQUEST['jsreload']; } @@ -1058,7 +1061,7 @@ function item_content(App $a) { return; } - require_once('include/security.php'); + require_once 'include/security.php'; $o = ''; if (($a->argc == 3) && ($a->argv[1] === 'drop') && intval($a->argv[2])) { @@ -1086,19 +1089,19 @@ function item_content(App $a) { * * @return boolean true if replaced, false if not replaced */ -function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $network = "") { - require_once("include/Scrape.php"); - require_once("include/socgraph.php"); +function handle_tag(App $a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $network = "") { + require_once 'include/Scrape.php'; + require_once 'include/socgraph.php'; $replaced = false; $r = null; //is it a person tag? - if (strpos($tag,'@') === 0) { + if (strpos($tag, '@') === 0) { //is it already replaced? - if (strpos($tag,'[url=')) { + if (strpos($tag, '[url=')) { //append tag to str_tags - if (!stristr($str_tags,$tag)) { + if (!stristr($str_tags, $tag)) { if (strlen($str_tags)) { $str_tags .= ','; } @@ -1111,19 +1114,22 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo $r = q("SELECT `alias`, `name` FROM `contact` WHERE `nurl` = '%s' AND `alias` != '' AND `uid` = 0", normalise_link($matches[1])); - if (!$r) + if (!dbm::is_result($r)) { $r = q("SELECT `alias`, `name` FROM `gcontact` WHERE `nurl` = '%s' AND `alias` != ''", normalise_link($matches[1])); - if ($r) + } + if (dbm::is_result($r)) { $data = $r[0]; - else + } else { $data = probe_url($matches[1]); + } if ($data["alias"] != "") { - $newtag = '@[url='.$data["alias"].']'.$data["name"].'[/url]'; - if(!stristr($str_tags,$newtag)) { - if(strlen($str_tags)) + $newtag = '@[url=' . $data["alias"] . ']' . $data["name"] . '[/url]'; + if (!stristr($str_tags, $newtag)) { + if (strlen($str_tags)) { $str_tags .= ','; + } $str_tags .= $newtag; } } @@ -1133,7 +1139,7 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo } $stat = false; //get the person's name - $name = substr($tag,1); + $name = substr($tag, 1); // Sometimes the tag detection doesn't seem to work right // This is some workaround @@ -1141,7 +1147,7 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo $name = $nameparts[0]; // Try to detect the contact in various ways - if ((strpos($name,'@')) || (strpos($name,'http://'))) { + if ((strpos($name, '@')) || (strpos($name, 'http://'))) { // Is it in format @user@domain.tld or @http://domain.tld/...? // First check the contact table for the address @@ -1155,7 +1161,7 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo ); // Then check in the contact table for the url - if (!$r) + if (!dbm::is_result($r)) { $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network`, `notify` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND (`network` != '%s' OR (`notify` != '' AND `alias` != '')) @@ -1164,26 +1170,29 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo intval($profile_uid), dbesc(NETWORK_OSTATUS) ); + } // Then check in the global contacts for the address - if (!$r) + if (!dbm::is_result($r)) { $r = q("SELECT `url`, `nick`, `name`, `alias`, `network`, `notify` FROM `gcontact` WHERE `addr` = '%s' AND (`network` != '%s' OR (`notify` != '' AND `alias` != '')) LIMIT 1", dbesc($name), dbesc(NETWORK_OSTATUS) ); + } // Then check in the global contacts for the url - if (!$r) + if (!dbm::is_result($r)) { $r = q("SELECT `url`, `nick`, `name`, `alias`, `network`, `notify` FROM `gcontact` WHERE `nurl` = '%s' AND (`network` != '%s' OR (`notify` != '' AND `alias` != '')) LIMIT 1", dbesc(normalise_link($name)), dbesc(NETWORK_OSTATUS) ); + } - if (!$r) { + if (!dbm::is_result($r)) { $probed = probe_url($name); if ($result['network'] != NETWORK_PHANTOM) { update_gcontact($probed); @@ -1193,9 +1202,9 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo } } else { $r = false; - if (strrpos($name,'+')) { + if (strrpos($name, '+')) { // Is it in format @nick+number? - $tagcid = intval(substr($name,strrpos($name,'+') + 1)); + $tagcid = intval(substr($name, strrpos($name, '+') + 1)); $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($tagcid), @@ -1203,8 +1212,8 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo ); } - //select someone by attag or nick and the name passed in the current network - if(!$r AND ($network != "")) + // select someone by attag or nick and the name passed in the current network + if(!dbm::is_result($r) AND ($network != "")) $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network` FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `network` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1", dbesc($name), dbesc($name), @@ -1213,70 +1222,78 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo ); //select someone from this user's contacts by name in the current network - if (!$r AND ($network != "")) + if (!dbm::is_result($r) AND ($network != "")) { $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network` FROM `contact` WHERE `name` = '%s' AND `network` = '%s' AND `uid` = %d LIMIT 1", dbesc($name), dbesc($network), intval($profile_uid) ); + } - //select someone by attag or nick and the name passed in - if(!$r) + // select someone by attag or nick and the name passed in + if(!dbm::is_result($r)) { $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network` FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1", dbesc($name), dbesc($name), intval($profile_uid) ); + } - - //select someone from this user's contacts by name - if(!$r) + // select someone from this user's contacts by name + if(!dbm::is_result($r)) { $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network` FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", dbesc($name), intval($profile_uid) ); + } } - if ($r) { - if(strlen($inform) AND (isset($r[0]["notify"]) OR isset($r[0]["id"]))) + if (dbm::is_result($r)) { + if (strlen($inform) AND (isset($r[0]["notify"]) OR isset($r[0]["id"]))) { $inform .= ','; + } - if (isset($r[0]["id"])) + if (isset($r[0]["id"])) { $inform .= 'cid:' . $r[0]["id"]; - elseif (isset($r[0]["notify"])) + } elseif (isset($r[0]["notify"])) { $inform .= $r[0]["notify"]; + } $profile = $r[0]["url"]; $alias = $r[0]["alias"]; $newname = $r[0]["nick"]; if (($newname == "") OR (($r[0]["network"] != NETWORK_OSTATUS) AND ($r[0]["network"] != NETWORK_TWITTER) - AND ($r[0]["network"] != NETWORK_STATUSNET) AND ($r[0]["network"] != NETWORK_APPNET))) + AND ($r[0]["network"] != NETWORK_STATUSNET) AND ($r[0]["network"] != NETWORK_APPNET))) { $newname = $r[0]["name"]; + } } //if there is an url for this persons profile if (isset($profile) AND ($newname != "")) { $replaced = true; - //create profile link - $profile = str_replace(',','%2c',$profile); - $newtag = '@[url='.$profile.']'.$newname.'[/url]'; - $body = str_replace('@'.$name, $newtag, $body); - //append tag to str_tags - if(! stristr($str_tags,$newtag)) { - if(strlen($str_tags)) + // create profile link + $profile = str_replace(',', '%2c', $profile); + $newtag = '@[url=' . $profile . ']' . $newname . '[/url]'; + $body = str_replace('@' . $name, $newtag, $body); + // append tag to str_tags + if (! stristr($str_tags, $newtag)) { + if (strlen($str_tags)) { $str_tags .= ','; + } $str_tags .= $newtag; } - // Status.Net seems to require the numeric ID URL in a mention if the person isn't - // subscribed to you. But the nickname URL is OK if they are. Grrr. We'll tag both. - - if(strlen($alias)) { - $newtag = '@[url='.$alias.']'.$newname.'[/url]'; - if(! stristr($str_tags,$newtag)) { - if(strlen($str_tags)) + /* + * Status.Net seems to require the numeric ID URL in a mention if the person isn't + * subscribed to you. But the nickname URL is OK if they are. Grrr. We'll tag both. + */ + if (strlen($alias)) { + $newtag = '@[url=' . $alias . ']' . $newname . '[/url]'; + if (! stristr($str_tags, $newtag)) { + if (strlen($str_tags)) { $str_tags .= ','; + } $str_tags .= $newtag; } } diff --git a/mod/manage.php b/mod/manage.php index 4beb8e46c..e85561acf 100644 --- a/mod/manage.php +++ b/mod/manage.php @@ -22,34 +22,34 @@ function manage_post(App $a) { } } - $r = q("select * from manage where uid = %d", + $r = q("SELECT * FROM `manage` WHERE `uid` = %d", intval($uid) ); $submanage = $r; $identity = ((x($_POST['identity'])) ? intval($_POST['identity']) : 0); - if(! $identity) + if (! $identity) { return; + } $limited_id = 0; $original_id = $uid; - if(count($submanage)) { - foreach($submanage as $m) { - if($identity == $m['mid']) { + if (dbm::is_result($submanage)) { + foreach ($submanage as $m) { + if ($identity == $m['mid']) { $limited_id = $m['mid']; break; } } } - if($limited_id) { + if ($limited_id) { $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($limited_id) ); - } - else { + } else { $r = q("SELECT * FROM `user` WHERE `uid` = %d AND `email` = '%s' AND `password` = '%s' LIMIT 1", intval($identity), dbesc($orig_record['email']), @@ -70,18 +70,22 @@ function manage_post(App $a) { unset($_SESSION['mobile-theme']); unset($_SESSION['page_flags']); unset($_SESSION['return_url']); - if(x($_SESSION,'submanage')) + if (x($_SESSION, 'submanage')) { unset($_SESSION['submanage']); - if(x($_SESSION,'sysmsg')) + } + if (x($_SESSION, 'sysmsg')) { unset($_SESSION['sysmsg']); - if(x($_SESSION,'sysmsg_info')) + } + if (x($_SESSION, 'sysmsg_info')) { unset($_SESSION['sysmsg_info']); + } require_once('include/security.php'); - authenticate_success($r[0],true,true); + authenticate_success($r[0], true, true); - if($limited_id) + if ($limited_id) { $_SESSION['submanage'] = $original_id; + } $ret = array(); call_hooks('home_init',$ret); @@ -113,26 +117,32 @@ function manage_content(App $a) { dbesc($id['uid']) ); - $identities[$key][thumb] = $thumb[0][thumb]; + $identities[$key]['thumb'] = $thumb[0]['thumb']; - $identities[$key]['selected'] = (($id['nickname'] === $a->user['nickname']) ? true : false); + $identities[$key]['selected'] = ($id['nickname'] === $a->user['nickname']); $notifications = 0; $r = q("SELECT DISTINCT(`parent`) FROM `notify` WHERE `uid` = %d AND NOT `seen` AND NOT (`type` IN (%d, %d))", intval($id['uid']), intval(NOTIFY_INTRO), intval(NOTIFY_MAIL)); - if ($r) + + if (dbm::is_result($r)) { $notifications = sizeof($r); + } $r = q("SELECT DISTINCT(`convid`) FROM `mail` WHERE `uid` = %d AND NOT `seen`", intval($id['uid'])); - if ($r) + + if (dbm::is_result($r)) { $notifications = $notifications + sizeof($r); + } $r = q("SELECT COUNT(*) AS `introductions` FROM `intro` WHERE NOT `blocked` AND NOT `ignore` AND `uid` = %d", intval($id['uid'])); - if ($r) + + if (dbm::is_result($r)) { $notifications = $notifications + $r[0]["introductions"]; + } $identities[$key]['notifications'] = $notifications; } diff --git a/mod/network.php b/mod/network.php index a1181a74c..d2c77f19d 100644 --- a/mod/network.php +++ b/mod/network.php @@ -6,7 +6,7 @@ function network_init(App $a) { } $is_a_date_query = false; - if (x($_GET['cid']) && intval($_GET['cid']) != 0) { + if (x($_GET, 'cid') && intval($_GET['cid']) != 0) { $cid = $_GET['cid']; } @@ -103,24 +103,27 @@ function network_init(App $a) { } } - if(x($_GET['nets']) && $_GET['nets'] === 'all') + // If nets is set to all, unset it + if (x($_GET, 'nets') && $_GET['nets'] === 'all') { unset($_GET['nets']); + } $group_id = (($a->argc > 1 && is_numeric($a->argv[1])) ? intval($a->argv[1]) : 0); set_pconfig(local_user(), 'network.view', 'group.selected', $group_id); - require_once('include/group.php'); - require_once('include/contact_widgets.php'); - require_once('include/items.php'); - require_once('include/ForumManager.php'); + require_once 'include/group.php'; + require_once 'include/contact_widgets.php'; + require_once 'include/items.php'; + require_once 'include/ForumManager.php'; - if(! x($a->page,'aside')) + if (! x($a->page, 'aside')) { $a->page['aside'] = ''; + } - $search = ((x($_GET,'search')) ? escape_tags($_GET['search']) : ''); + $search = ((x($_GET, 'search')) ? escape_tags($_GET['search']) : ''); - if(x($_GET,'save')) { + if (x($_GET, 'save')) { $r = qu("SELECT * FROM `search` WHERE `uid` = %d AND `term` = '%s' LIMIT 1", intval(local_user()), dbesc($search) @@ -132,7 +135,7 @@ function network_init(App $a) { ); } } - if(x($_GET,'remove')) { + if (x($_GET, 'remove')) { q("DELETE FROM `search` WHERE `uid` = %d AND `term` = '%s'", intval(local_user()), dbesc($search) @@ -140,7 +143,7 @@ function network_init(App $a) { } // search terms header - if(x($_GET,'search')) { + if (x($_GET, 'search')) { $a->page['content'] .= replace_macros(get_markup_template("section_title.tpl"),array( '$title' => sprintf( t('Results for: %s'), $search) )); @@ -157,8 +160,9 @@ function network_init(App $a) { function saved_searches($search) { - if(! feature_enabled(local_user(),'savedsearch')) + if (! feature_enabled(local_user(),'savedsearch')) { return ''; + } $a = get_app(); diff --git a/mod/photos.php b/mod/photos.php index 27d8499c2..ddf081467 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -1,23 +1,24 @@ argc > 1) + if ($a->argc > 1) { auto_redir($a, $a->argv[1]); + } - if ((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { + if ((get_config('system', 'block_public')) && (! local_user()) && (! remote_user())) { return; } @@ -29,8 +30,9 @@ function photos_init(App $a) { dbesc($nick) ); - if (! count($user)) + if (! dbm::is_result($user)) { return; + } $a->data['user'] = $user[0]; $a->profile_uid = $user[0]['uid']; @@ -59,8 +61,9 @@ function photos_init(App $a) { if ($albums) { $a->data['albums'] = $albums; - if ($albums_visible) + if ($albums_visible) { $ret['success'] = true; + } $ret['albums'] = array(); foreach ($albums as $k => $album) { @@ -80,24 +83,26 @@ function photos_init(App $a) { $albums = $ret; - if (local_user() && $a->data['user']['uid'] == local_user()) + if (local_user() && $a->data['user']['uid'] == local_user()) { $can_post = true; + } if ($albums['success']) { - $photo_albums_widget = replace_macros(get_markup_template('photo_albums.tpl'),array( + $photo_albums_widget = replace_macros(get_markup_template('photo_albums.tpl'), array( '$nick' => $a->data['user']['nickname'], '$title' => t('Photo Albums'), - '$recent' => t('Recent Photos'), + '$recent' => t('Recent Photos'), '$albums' => $albums['albums'], '$baseurl' => z_root(), - '$upload' => array( t('Upload New Photos'), 'photos/' . $a->data['user']['nickname'] . '/upload'), + '$upload' => array(t('Upload New Photos'), 'photos/' . $a->data['user']['nickname'] . '/upload'), '$can_post' => $can_post )); } - if (! x($a->page,'aside')) + if (! x($a->page, 'aside')) { $a->page['aside'] = ''; + } $a->page['aside'] .= $vcard_widget; $a->page['aside'] .= $photo_albums_widget; @@ -130,9 +135,9 @@ function photos_post(App $a) { $page_owner_uid = $a->data['user']['uid']; $community_page = (($a->data['user']['page-flags'] == PAGE_COMMUNITY) ? true : false); - if ((local_user()) && (local_user() == $page_owner_uid)) + if ((local_user()) && (local_user() == $page_owner_uid)) { $can_post = true; - else { + } else { if ($community_page && remote_user()) { $contact_id = 0; if (is_array($_SESSION['remote'])) { @@ -295,8 +300,9 @@ function photos_post(App $a) { // send the notification upstream/downstream as the case may be - if ($rr['visible']) + if ($rr['visible']) { proc_run(PRIORITY_HIGH, "include/notifier.php", "drop", $drop_id); + } } } @@ -371,8 +377,9 @@ function photos_post(App $a) { // Update the photo albums cache photo_albums($page_owner_uid, true); - if ($i[0]['visible']) + if ($i[0]['visible']) { proc_run(PRIORITY_HIGH, "include/notifier.php", "drop", $drop_id); + } } } @@ -394,15 +401,16 @@ function photos_post(App $a) { $resource_id = $a->argv[2]; - if (! strlen($albname)) + if (! strlen($albname)) { $albname = datetime_convert('UTC',date_default_timezone_get(),'now', 'Y'); + } if ((x($_POST,'rotate') !== false) && ( (intval($_POST['rotate']) == 1) || (intval($_POST['rotate']) == 2) )) { logger('rotate'); - $r = q("select * from photo where `resource-id` = '%s' and uid = %d and scale = 0 limit 1", + $r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `uid` = %d AND `scale` = 0 LIMIT 1", dbesc($resource_id), intval($page_owner_uid) ); @@ -415,7 +423,7 @@ function photos_post(App $a) { $width = $ph->getWidth(); $height = $ph->getHeight(); - $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 0", + $x = q("UPDATE `photo` SET `data` = '%s', `height` = %d, `width` = %d WHERE `resource-id` = '%s' AND `uid` = %d AND `scale` = 0", dbesc($ph->imageString()), intval($height), intval($width), @@ -428,7 +436,7 @@ function photos_post(App $a) { $width = $ph->getWidth(); $height = $ph->getHeight(); - $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 1", + $x = q("UPDATE `photo` SET `data` = '%s', `height` = %d, `width` = %d WHERE `resource-id` = '%s' AND `uid` = %d AND `scale` = 1", dbesc($ph->imageString()), intval($height), intval($width), @@ -442,7 +450,7 @@ function photos_post(App $a) { $width = $ph->getWidth(); $height = $ph->getHeight(); - $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 2", + $x = q("UPDATE `photo` SET `data` = '%s', `height` = %d, `width` = %d WHERE `resource-id` = '%s' AND `uid` = %d AND `scale` = 2", dbesc($ph->imageString()), intval($height), intval($width), @@ -458,7 +466,7 @@ function photos_post(App $a) { dbesc($resource_id), intval($page_owner_uid) ); - if (count($p)) { + if (dbm::is_result($p)) { $ext = $phototypes[$p[0]['type']]; $r = q("UPDATE `photo` SET `desc` = '%s', `album` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' WHERE `resource-id` = '%s' AND `uid` = %d", dbesc($desc), @@ -470,6 +478,7 @@ function photos_post(App $a) { dbesc($resource_id), intval($page_owner_uid) ); + // Update the photo albums cache if album name was changed if ($albname !== $origaname) { photo_albums($page_owner_uid, true); @@ -479,8 +488,9 @@ function photos_post(App $a) { /* Don't make the item visible if the only change was the album name */ $visibility = 0; - if ($p[0]['desc'] !== $desc || strlen($rawtags)) + if ($p[0]['desc'] !== $desc || strlen($rawtags)) { $visibility = 1; + } if (! $item_id) { @@ -540,40 +550,45 @@ function photos_post(App $a) { // if the new tag doesn't have a namespace specifier (@foo or #foo) give it a hashtag $x = substr($rawtags,0,1); - if ($x !== '@' && $x !== '#') + if ($x !== '@' && $x !== '#') { $rawtags = '#' . $rawtags; + } $taginfo = array(); $tags = get_tags($rawtags); if (count($tags)) { foreach ($tags as $tag) { - if (isset($profile)) + if (isset($profile)) { unset($profile); - if (strpos($tag,'@') === 0) { + } + if (strpos($tag, '@') === 0) { $name = substr($tag,1); - if ((strpos($name,'@')) || (strpos($name,'http://'))) { + if ((strpos($name, '@')) || (strpos($name, 'http://'))) { $newname = $name; $links = @Probe::lrdd($name); if (count($links)) { foreach ($links as $link) { - if ($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page') + if ($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page') { $profile = $link['@attributes']['href']; + } if ($link['@attributes']['rel'] === 'salmon') { - $salmon = '$url:' . str_replace(',','%sc',$link['@attributes']['href']); - if (strlen($inform)) + $salmon = '$url:' . str_replace(',', '%sc', $link['@attributes']['href']); + if (strlen($inform)) { $inform .= ','; - $inform .= $salmon; + } + $inform .= $salmon; } } } - $taginfo[] = array($newname,$profile,$salmon); + $taginfo[] = array($newname, $profile, $salmon); } else { $newname = $name; $alias = ''; $tagcid = 0; - if (strrpos($newname,'+')) - $tagcid = intval(substr($newname,strrpos($newname,'+') + 1)); + if (strrpos($newname, '+')) { + $tagcid = intval(substr($newname, strrpos($newname, '+') + 1)); + } if ($tagcid) { $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", @@ -589,7 +604,7 @@ function photos_post(App $a) { intval($page_owner_uid) ); - if (! $r) { + if (! dbm::is_result($r)) { //select someone by attag or nick and the name passed in $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1", dbesc($name), @@ -598,53 +613,46 @@ function photos_post(App $a) { ); } } -/* elseif (strstr($name,'_') || strstr($name,' ')) { - $newname = str_replace('_',' ',$name); - $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", - dbesc($newname), - intval($page_owner_uid) - ); - } else { - $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1", - dbesc($name), - dbesc($name), - intval($page_owner_uid) - ); - }*/ + if (dbm::is_result($r)) { $newname = $r[0]['name']; $profile = $r[0]['url']; $notify = 'cid:' . $r[0]['id']; - if (strlen($inform)) + if (strlen($inform)) { $inform .= ','; + } $inform .= $notify; } } if ($profile) { - if (substr($notify,0,4) === 'cid:') - $taginfo[] = array($newname,$profile,$notify,$r[0],'@[url=' . str_replace(',','%2c',$profile) . ']' . $newname . '[/url]'); - else - $taginfo[] = array($newname,$profile,$notify,null,$str_tags .= '@[url=' . $profile . ']' . $newname . '[/url]'); - if (strlen($str_tags)) + if (substr($notify, 0, 4) === 'cid:') { + $taginfo[] = array($newname, $profile, $notify, $r[0], '@[url=' . str_replace(',','%2c',$profile) . ']' . $newname . '[/url]'); + } else { + $taginfo[] = array($newname, $profile, $notify, null, $str_tags .= '@[url=' . $profile . ']' . $newname . '[/url]'); + } + if (strlen($str_tags)) { $str_tags .= ','; - $profile = str_replace(',','%2c',$profile); + } + $profile = str_replace(',', '%2c', $profile); $str_tags .= '@[url='.$profile.']'.$newname.'[/url]'; } - } elseif (strpos($tag,'#') === 0) { + } elseif (strpos($tag, '#') === 0) { $tagname = substr($tag, 1); - $str_tags .= '#[url='.App::get_baseurl()."/search?tag=".$tagname.']'.$tagname.'[/url]'; + $str_tags .= '#[url=' . App::get_baseurl() . "/search?tag=" . $tagname . ']' . $tagname . '[/url]'; } } } $newtag = $old_tag; - if (strlen($newtag) && strlen($str_tags)) + if (strlen($newtag) && strlen($str_tags)) { $newtag .= ','; + } $newtag .= $str_tags; $newinform = $old_inform; - if (strlen($newinform) && strlen($inform)) + if (strlen($newinform) && strlen($inform)) { $newinform .= ','; + } $newinform .= $inform; $r = q("UPDATE `item` SET `tag` = '%s', `inform` = '%s', `edited` = '%s', `changed` = '%s' WHERE `id` = %d AND `uid` = %d", @@ -707,8 +715,9 @@ function photos_post(App $a) { $arr['object'] = '' . ACTIVITY_OBJ_PERSON . '' . $tagged[0] . '' . $tagged[1] . '/' . $tagged[0] . ''; $arr['object'] .= '' . xmlify('' . "\n"); - if ($tagged[3]) + if ($tagged[3]) { $arr['object'] .= xmlify('' . "\n"); + } $arr['object'] .= '' . "\n"; $arr['target'] = '' . ACTIVITY_OBJ_IMAGE . '' . $p[0]['desc'] . '' @@ -720,9 +729,7 @@ function photos_post(App $a) { proc_run(PRIORITY_HIGH, "include/notifier.php", "tag", $item_id); } } - } - } goaway($_SESSION['photo_return']); return; // NOTREACHED @@ -745,38 +752,39 @@ function photos_post(App $a) { logger('mod/photos.php: photos_post(): album= ' . $album . ' newalbum= ' . $newalbum , LOGGER_DEBUG); if (! strlen($album)) { - if (strlen($newalbum)) + if (strlen($newalbum)) { $album = $newalbum; - else + } else { $album = datetime_convert('UTC',date_default_timezone_get(),'now', 'Y'); + } } - /** - * + /* * We create a wall item for every photo, but we don't want to * overwhelm the data stream with a hundred newly uploaded photos. * So we will make the first photo uploaded to this album in the last several hours * visible by default, the rest will become visible over time when and if * they acquire comments, likes, dislikes, and/or tags - * */ $r = q("SELECT * FROM `photo` WHERE `album` = '%s' AND `uid` = %d AND `created` > UTC_TIMESTAMP() - INTERVAL 3 HOUR ", dbesc($album), intval($page_owner_uid) ); - if ((! dbm::is_result($r)) || ($album == t('Profile Photos'))) + if ((! dbm::is_result($r)) || ($album == t('Profile Photos'))) { $visible = 1; - else + } else { $visible = 0; + } - if (intval($_REQUEST['not_visible']) || $_REQUEST['not_visible'] === 'true') + if (intval($_REQUEST['not_visible']) || $_REQUEST['not_visible'] === 'true') { $visible = 0; + } - $str_group_allow = perms2str(((is_array($_REQUEST['group_allow'])) ? $_REQUEST['group_allow'] : explode(',',$_REQUEST['group_allow']))); - $str_contact_allow = perms2str(((is_array($_REQUEST['contact_allow'])) ? $_REQUEST['contact_allow'] : explode(',',$_REQUEST['contact_allow']))); - $str_group_deny = perms2str(((is_array($_REQUEST['group_deny'])) ? $_REQUEST['group_deny'] : explode(',',$_REQUEST['group_deny']))); - $str_contact_deny = perms2str(((is_array($_REQUEST['contact_deny'])) ? $_REQUEST['contact_deny'] : explode(',',$_REQUEST['contact_deny']))); + $str_group_allow = perms2str(((is_array($_REQUEST['group_allow'])) ? $_REQUEST['group_allow'] : explode(',', $_REQUEST['group_allow']))); + $str_contact_allow = perms2str(((is_array($_REQUEST['contact_allow'])) ? $_REQUEST['contact_allow'] : explode(',', $_REQUEST['contact_allow']))); + $str_group_deny = perms2str(((is_array($_REQUEST['group_deny'])) ? $_REQUEST['group_deny'] : explode(',', $_REQUEST['group_deny']))); + $str_contact_deny = perms2str(((is_array($_REQUEST['contact_deny'])) ? $_REQUEST['contact_deny'] : explode(',', $_REQUEST['contact_deny']))); $ret = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => ''); @@ -793,7 +801,9 @@ function photos_post(App $a) { $filesize = intval($_FILES['userfile']['size']); $type = $_FILES['userfile']['type']; } - if ($type=="") $type=guess_image_type($filename); + if ($type == "") { + $type = guess_image_type($filename); + } logger('photos: upload: received file: ' . $filename . ' as ' . $src . ' ('. $type . ') ' . $filesize . ' bytes', LOGGER_DEBUG); @@ -820,10 +830,10 @@ function photos_post(App $a) { $imagedata = @file_get_contents($src); - $limit = service_class_fetch($a->data['user']['uid'],'photo_upload_limit'); + $limit = service_class_fetch($a->data['user']['uid'], 'photo_upload_limit'); if ($limit) { - $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ", + $r = q("SELECT SUM(OCTET_LENGTH(`data`)) AS `total` FROM `photo` WHERE `uid` = %d AND `scale` = 0 AND `album` != 'Contact Photos'", intval($a->data['user']['uid']) ); $size = $r[0]['total']; @@ -851,11 +861,13 @@ function photos_post(App $a) { $exif = $ph->orient($src); @unlink($src); - $max_length = get_config('system','max_image_length'); - if (! $max_length) + $max_length = get_config('system', 'max_image_length'); + if (! $max_length) { $max_length = MAX_IMAGE_LENGTH; - if ($max_length > 0) + } + if ($max_length > 0) { $ph->scaleImage($max_length); + } $width = $ph->getWidth(); $height = $ph->getHeight(); @@ -891,6 +903,7 @@ function photos_post(App $a) { $lat = $lon = null; + /// @TODO merge these 2 if() into one? if ($exif && $exif['GPS']) { if (feature_enabled($channel_id,'photo_location')) { $lat = getGps($exif['GPS']['GPSLatitude'], $exif['GPS']['GPSLatitudeRef']); @@ -900,8 +913,9 @@ function photos_post(App $a) { $arr = array(); - if ($lat && $lon) + if ($lat && $lon) { $arr['coord'] = $lat . ' ' . $lon; + } $arr['guid'] = get_guid(32); $arr['uid'] = $page_owner_uid; @@ -934,20 +948,21 @@ function photos_post(App $a) { // Update the photo albums cache photo_albums($page_owner_uid, true); - if ($visible) + if ($visible) { proc_run(PRIORITY_HIGH, "include/notifier.php", 'wall-new', $item_id); + } call_hooks('photo_post_end',intval($item_id)); - // addon uploaders should call "killme()" [e.g. exit] within the photo_post_end hook - // if they do not wish to be redirected + /* + * addon uploaders should call "killme()" [e.g. exit] within the photo_post_end hook + * if they do not wish to be redirected + */ goaway($_SESSION['photo_return']); // NOTREACHED } - - function photos_content(App $a) { // URLs: @@ -960,12 +975,11 @@ function photos_content(App $a) { // photos/name/image/xxxxx/edit - if ((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { + if ((get_config('system', 'block_public')) && (! local_user()) && (! remote_user())) { notice( t('Public access denied.') . EOL); return; } - require_once('include/bbcode.php'); require_once('include/security.php'); require_once('include/conversation.php'); @@ -986,15 +1000,17 @@ function photos_content(App $a) { if ($a->argc > 3) { $datatype = $a->argv[2]; $datum = $a->argv[3]; - } elseif (($a->argc > 2) && ($a->argv[2] === 'upload')) + } elseif (($a->argc > 2) && ($a->argv[2] === 'upload')) { $datatype = 'upload'; - else + } else { $datatype = 'summary'; + } - if ($a->argc > 4) + if ($a->argc > 4) { $cmd = $a->argv[4]; - else + } else { $cmd = 'view'; + } // // Setup permissions structures @@ -1010,9 +1026,9 @@ function photos_content(App $a) { $community_page = (($a->data['user']['page-flags'] == PAGE_COMMUNITY) ? true : false); - if ((local_user()) && (local_user() == $owner_uid)) + if ((local_user()) && (local_user() == $owner_uid)) { $can_post = true; - else { + } else { if ($community_page && remote_user()) { if (is_array($_SESSION['remote'])) { foreach ($_SESSION['remote'] as $v) { @@ -1063,6 +1079,7 @@ function photos_content(App $a) { } } + /// @TODO merge these 2 if() into one? if (! $remote_contact) { if (local_user()) { $contact_id = $_SESSION['cid']; @@ -1081,7 +1098,7 @@ function photos_content(App $a) { // tabs $is_owner = (local_user() && (local_user() == $owner_uid)); - $o .= profile_tabs($a,$is_owner, $a->data['user']['nickname']); + $o .= profile_tabs($a, $is_owner, $a->data['user']['nickname']); /** * Display upload form @@ -1089,7 +1106,7 @@ function photos_content(App $a) { if ($datatype === 'upload') { if (! ($can_post)) { - notice( t('Permission denied.')); + notice(t('Permission denied.')); return; } @@ -1103,8 +1120,9 @@ function photos_content(App $a) { $albumselect .= ''; if (count($a->data['albums'])) { foreach ($a->data['albums'] as $album) { - if (($album['album'] === '') || ($album['album'] === 'Contact Photos') || ($album['album'] === t('Contact Photos'))) + if (($album['album'] === '') || ($album['album'] === 'Contact Photos') || ($album['album'] === t('Contact Photos'))) { continue; + } $selected = (($selname === $album['album']) ? ' selected="selected" ' : ''); $albumselect .= ''; } @@ -1116,7 +1134,6 @@ function photos_content(App $a) { 'addon_text' => $uploader, 'default_upload' => true); - call_hooks('photo_upload_form',$ret); $default_upload_box = replace_macros(get_markup_template('photos_default_uploader_box.tpl'), array()); @@ -1125,34 +1142,37 @@ function photos_content(App $a) { )); $usage_message = ''; - $limit = service_class_fetch($a->data['user']['uid'],'photo_upload_limit'); + $limit = service_class_fetch($a->data['user']['uid'], 'photo_upload_limit'); if ($limit !== false) { - $r = q("select sum(datasize) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ", + $r = q("SELECT SUM(`datasize`) AS `total` FROM `photo` WHERE `uid` = %d AND `scale` = 0 AND `album` != 'Contact Photos'", intval($a->data['user']['uid']) ); - $usage_message = sprintf( t("You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."), $r[0]['total'] / 1024000, $limit / 1024000 ); + $usage_message = sprintf(t("You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."), $r[0]['total'] / 1024000, $limit / 1024000 ); } // Private/public post links for the non-JS ACL form $private_post = 1; - if ($_REQUEST['public']) + if ($_REQUEST['public']) { $private_post = 0; + } $query_str = $a->query_string; - if (strpos($query_str, 'public=1') !== false) + if (strpos($query_str, 'public=1') !== false) { $query_str = str_replace(array('?public=1', '&public=1'), array('', ''), $query_str); + } - // I think $a->query_string may never have ? in it, but I could be wrong - // It looks like it's from the index.php?q=[etc] rewrite that the web - // server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61 - if (strpos($query_str, '?') === false) + /* + * I think $a->query_string may never have ? in it, but I could be wrong + * It looks like it's from the index.php?q=[etc] rewrite that the web + * server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61 + */ + if (strpos($query_str, '?') === false) { $public_post_link = '?public=1'; - else + } else { $public_post_link = '&public=1'; - - + } $tpl = get_markup_template('photos_upload.tpl'); @@ -1213,10 +1233,12 @@ function photos_content(App $a) { $a->set_pager_itemspage(20); } - if ($_GET['order'] === 'posted') + /// @TODO I have seen this many times, maybe generalize it script-wide and encapsulate it? + if ($_GET['order'] === 'posted') { $order = 'ASC'; - else + } else { $order = 'DESC'; + } $r = q("SELECT `resource-id`, `id`, `filename`, type, max(`scale`) AS `scale`, `desc` FROM `photo` WHERE `uid` = %d AND `album` = '%s' AND `scale` <= 4 $sql_extra GROUP BY `resource-id` ORDER BY `created` $order LIMIT %d , %d", @@ -1226,7 +1248,7 @@ function photos_content(App $a) { intval($a->pager['itemspage']) ); - //edit album name + // edit album name if ($cmd === 'edit') { if (($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) { if ($can_post) { @@ -1249,27 +1271,27 @@ function photos_content(App $a) { } } } else { - if (($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) { - if ($can_post) { - $edit = array(t('Edit Album'), 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '/edit'); - } + if (($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos')) && $can_post) { + $edit = array(t('Edit Album'), 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '/edit'); } } - if ($_GET['order'] === 'posted') + if ($_GET['order'] === 'posted') { $order = array(t('Show Newest First'), 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album)); - else + } else { $order = array(t('Show Oldest First'), 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '?f=&order=posted'); + } $photos = array(); if (dbm::is_result($r)) $twist = 'rotright'; foreach ($r as $rr) { - if ($twist == 'rotright') + if ($twist == 'rotright') { $twist = 'rotleft'; - else + } else { $twist = 'rotright'; + } $ext = $phototypes[$rr['type']]; @@ -1310,10 +1332,9 @@ function photos_content(App $a) { } - /** + /* * Display one photo */ - if ($datatype === 'image') { //$o = ''; @@ -1325,16 +1346,17 @@ function photos_content(App $a) { dbesc($datum) ); - if (! count($ph)) { + if (! dbm::is_result($ph)) { $ph = q("SELECT `id` FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' LIMIT 1", intval($owner_uid), dbesc($datum) ); - if (count($ph)) - notice( t('Permission denied. Access to this item may be restricted.')); - else - notice( t('Photo not available') . EOL ); + if (dbm::is_result($ph)) { + notice(t('Permission denied. Access to this item may be restricted.')); + } else { + notice(t('Photo not available') . EOL ); + } return; } @@ -1356,15 +1378,17 @@ function photos_content(App $a) { intval($owner_uid) ); - if (count($prvnxt)) { - for($z = 0; $z < count($prvnxt); $z++) { - if ($prvnxt[$z]['resource-id'] == $ph[0]['resource-id']) { + if (dbm::is_result($prvnxt)) { + foreach ($prvnxt as $z => $entry) { + if ($entry['resource-id'] == $ph[0]['resource-id']) { $prv = $z - 1; $nxt = $z + 1; - if ($prv < 0) + if ($prv < 0) { $prv = count($prvnxt) - 1; - if ($nxt >= count($prvnxt)) + } + if ($nxt >= count($prvnxt)) { $nxt = 0; + } break; } } @@ -1387,8 +1411,8 @@ function photos_content(App $a) { } $album_link = 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($ph[0]['album']); - $tools = Null; - $lock = Null; + $tools = null; + $lock = null; if ($can_post && ($ph[0]['uid'] == $owner_uid)) { $tools = array( @@ -1426,8 +1450,9 @@ function photos_content(App $a) { 'filename' => $hires['filename'], ); - if ($nextlink) + if ($nextlink) { $nextlink = array($nextlink, ''); + } // Do we have an item for this photo? @@ -1444,8 +1469,9 @@ function photos_content(App $a) { $map = null; - if (count($linked_items)) { + if (dbm::is_result($linked_items)) { $link_item = $linked_items[0]; + $r = qu("SELECT COUNT(*) AS `total` FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` WHERE `parent-uri` = '%s' AND `uri` != '%s' AND `item`.`deleted` = 0 and `item`.`moderated` = 0 @@ -1458,8 +1484,9 @@ function photos_content(App $a) { ); - if (dbm::is_result($r)) + if (dbm::is_result($r)) { $a->set_pager_total($r[0]['total']); + } $r = qu("SELECT `item`.*, `item`.`id` AS `item_id`, @@ -1493,15 +1520,16 @@ function photos_content(App $a) { } } - $tags=Null; + $tags = null; if (count($linked_items) && strlen($link_item['tag'])) { - $arr = explode(',',$link_item['tag']); + $arr = explode(',', $link_item['tag']); // parse tags and add links $tag_str = ''; foreach ($arr as $t) { - if (strlen($tag_str)) + if (strlen($tag_str)) { $tag_str .= ', '; + } $tag_str .= bbcode($t); } $tags = array(t('Tags: '), $tag_str); @@ -1518,21 +1546,25 @@ function photos_content(App $a) { // Private/public post links for the non-JS ACL form $private_post = 1; - if ($_REQUEST['public']) + if ($_REQUEST['public']) { $private_post = 0; + } $query_str = $a->query_string; - if (strpos($query_str, 'public=1') !== false) + if (strpos($query_str, 'public=1') !== false) { $query_str = str_replace(array('?public=1', '&public=1'), array('', ''), $query_str); + } - // I think $a->query_string may never have ? in it, but I could be wrong - // It looks like it's from the index.php?q=[etc] rewrite that the web - // server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61 - if (strpos($query_str, '?') === false) + /* + * I think $a->query_string may never have ? in it, but I could be wrong + * It looks like it's from the index.php?q=[etc] rewrite that the web + * server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61 + */ + if (strpos($query_str, '?') === false) { $public_post_link = '?public=1'; - else + } else { $public_post_link = '&public=1'; - + } if ($a->theme['template_engine'] === 'internal') { $album_e = template_escape($ph[0]['album']); @@ -1584,8 +1616,8 @@ function photos_content(App $a) { $likebuttons = ''; - if ($can_post || can_write_wall($a,$owner_uid)) { - $likebuttons = replace_macros($like_tpl,array( + if ($can_post || can_write_wall($a, $owner_uid)) { + $likebuttons = replace_macros($like_tpl, array( '$id' => $link_item['id'], '$likethis' => t("I like this \x28toggle\x29"), '$nolike' => (feature_enabled(local_user(), 'dislike') ? t("I don't like this \x28toggle\x29") : ''), @@ -1596,26 +1628,24 @@ function photos_content(App $a) { $comments = ''; if (! dbm::is_result($r)) { - if ($can_post || can_write_wall($a,$owner_uid)) { - if ($link_item['last-child']) { - $comments .= replace_macros($cmnt_tpl,array( - '$return_path' => '', - '$jsreload' => $return_url, - '$type' => 'wall-comment', - '$id' => $link_item['id'], - '$parent' => $link_item['id'], - '$profile_uid' => $owner_uid, - '$mylink' => $contact['url'], - '$mytitle' => t('This is you'), - '$myphoto' => $contact['thumb'], - '$comment' => t('Comment'), - '$submit' => t('Submit'), - '$preview' => t('Preview'), - '$sourceapp' => t($a->sourcename), - '$ww' => '', - '$rand_num' => random_digits(12) - )); - } + if (($can_post || can_write_wall($a, $owner_uid)) && $link_item['last-child']) { + $comments .= replace_macros($cmnt_tpl, array( + '$return_path' => '', + '$jsreload' => $return_url, + '$type' => 'wall-comment', + '$id' => $link_item['id'], + '$parent' => $link_item['id'], + '$profile_uid' => $owner_uid, + '$mylink' => $contact['url'], + '$mytitle' => t('This is you'), + '$myphoto' => $contact['thumb'], + '$comment' => t('Comment'), + '$submit' => t('Submit'), + '$preview' => t('Preview'), + '$sourceapp' => t($a->sourcename), + '$ww' => '', + '$rand_num' => random_digits(12) + )); } } @@ -1630,8 +1660,6 @@ function photos_content(App $a) { 'attendyes' => array('title' => t('Attending','title')), 'attendno' => array('title' => t('Not attending','title')), 'attendmaybe' => array('title' => t('Might attend','title')) ); - - // display comments if (dbm::is_result($r)) { @@ -1639,31 +1667,27 @@ function photos_content(App $a) { builtin_activity_puller($item, $conv_responses); } - $like = ((x($conv_responses['like'],$link_item['uri'])) ? format_like($conv_responses['like'][$link_item['uri']],$conv_responses['like'][$link_item['uri'] . '-l'],'like',$link_item['id']) : ''); - $dislike = ((x($conv_responses['dislike'],$link_item['uri'])) ? format_like($conv_responses['dislike'][$link_item['uri']],$conv_responses['dislike'][$link_item['uri'] . '-l'],'dislike',$link_item['id']) : ''); + $like = ((x($conv_responses['like'], $link_item['uri'])) ? format_like($conv_responses['like'][$link_item['uri']], $conv_responses['like'][$link_item['uri'] . '-l'], 'like',$link_item['id']) : ''); + $dislike = ((x($conv_responses['dislike'], $link_item['uri'])) ? format_like($conv_responses['dislike'][$link_item['uri']], $conv_responses['dislike'][$link_item['uri'] . '-l'], 'dislike',$link_item['id']) : ''); - - - if ($can_post || can_write_wall($a,$owner_uid)) { - if ($link_item['last-child']) { - $comments .= replace_macros($cmnt_tpl,array( - '$return_path' => '', - '$jsreload' => $return_url, - '$type' => 'wall-comment', - '$id' => $link_item['id'], - '$parent' => $link_item['id'], - '$profile_uid' => $owner_uid, - '$mylink' => $contact['url'], - '$mytitle' => t('This is you'), - '$myphoto' => $contact['thumb'], - '$comment' => t('Comment'), - '$submit' => t('Submit'), - '$preview' => t('Preview'), - '$sourceapp' => t($a->sourcename), - '$ww' => '', - '$rand_num' => random_digits(12) - )); - } + if (($can_post || can_write_wall($a, $owner_uid)) && $link_item['last-child']) { + $comments .= replace_macros($cmnt_tpl,array( + '$return_path' => '', + '$jsreload' => $return_url, + '$type' => 'wall-comment', + '$id' => $link_item['id'], + '$parent' => $link_item['id'], + '$profile_uid' => $owner_uid, + '$mylink' => $contact['url'], + '$mytitle' => t('This is you'), + '$myphoto' => $contact['thumb'], + '$comment' => t('Comment'), + '$submit' => t('Submit'), + '$preview' => t('Preview'), + '$sourceapp' => t($a->sourcename), + '$ww' => '', + '$rand_num' => random_digits(12) + )); } @@ -1675,7 +1699,7 @@ function photos_content(App $a) { if (((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) && ($item['id'] != $item['parent'])) continue; - $redirect_url = 'redir/' . $item['cid'] ; + $redirect_url = 'redir/' . $item['cid']; if (local_user() && ($item['contact-uid'] == local_user()) @@ -1694,8 +1718,6 @@ function photos_content(App $a) { $profile_link = $profile_url; - - $dropping = (($item['contact-id'] == $contact_id) || ($item['uid'] == local_user())); $drop = array( 'dropping' => $dropping, @@ -1704,7 +1726,6 @@ function photos_content(App $a) { 'delete' => t('Delete'), ); - if ($a->theme['template_engine'] === 'internal') { $name_e = template_escape($profile_name); $title_e = template_escape($item['title']); @@ -1729,27 +1750,24 @@ function photos_content(App $a) { '$comment' => $comment )); - if ($can_post || can_write_wall($a,$owner_uid)) { - - if ($item['last-child']) { - $comments .= replace_macros($cmnt_tpl,array( - '$return_path' => '', - '$jsreload' => $return_url, - '$type' => 'wall-comment', - '$id' => $item['item_id'], - '$parent' => $item['parent'], - '$profile_uid' => $owner_uid, - '$mylink' => $contact['url'], - '$mytitle' => t('This is you'), - '$myphoto' => $contact['thumb'], - '$comment' => t('Comment'), - '$submit' => t('Submit'), - '$preview' => t('Preview'), - '$sourceapp' => t($a->sourcename), - '$ww' => '', - '$rand_num' => random_digits(12) - )); - } + if (($can_post || can_write_wall($a, $owner_uid)) && $item['last-child']) { + $comments .= replace_macros($cmnt_tpl, array( + '$return_path' => '', + '$jsreload' => $return_url, + '$type' => 'wall-comment', + '$id' => $item['item_id'], + '$parent' => $item['parent'], + '$profile_uid' => $owner_uid, + '$mylink' => $contact['url'], + '$mytitle' => t('This is you'), + '$myphoto' => $contact['thumb'], + '$comment' => t('Comment'), + '$submit' => t('Submit'), + '$preview' => t('Preview'), + '$sourceapp' => t($a->sourcename), + '$ww' => '', + '$rand_num' => random_digits(12) + )); } } } @@ -1759,9 +1777,10 @@ function photos_content(App $a) { $response_verbs = array('like'); - if (feature_enabled($owner_uid,'dislike')) + if (feature_enabled($owner_uid, 'dislike')) { $response_verbs[] = 'dislike'; - $responses = get_responses($conv_responses,$response_verbs,'',$link_item); + } + $responses = get_responses($conv_responses,$response_verbs, '', $link_item); $photo_tpl = get_markup_template('photo_view.tpl'); @@ -1771,7 +1790,7 @@ function photos_content(App $a) { $like_e = template_escape($like); $dislike_e = template_escape($dislike); } else { - $album_e = array($album_link,$ph[0]['album']); + $album_e = array($album_link, $ph[0]['album']); $tags_e = $tags; $like_e = $like; $dislike_e = $dislike; @@ -1798,11 +1817,11 @@ function photos_content(App $a) { '$paginate' => $paginate, )); - $a->page['htmlhead'] .= "\n".''."\n"; - $a->page['htmlhead'] .= ''."\n"; - $a->page['htmlhead'] .= ''."\n"; - $a->page['htmlhead'] .= ''."\n"; - $a->page['htmlhead'] .= ''."\n"; + $a->page['htmlhead'] .= "\n" . '' . "\n"; + $a->page['htmlhead'] .= '' . "\n"; + $a->page['htmlhead'] .= '' . "\n"; + $a->page['htmlhead'] .= '' . "\n"; + $a->page['htmlhead'] .= '' . "\n"; return $o; } diff --git a/mod/profiles.php b/mod/profiles.php index 4e82ceaac..b73c46e71 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -10,7 +10,7 @@ function profiles_init(App $a) { return; } - if(($a->argc > 2) && ($a->argv[1] === "drop") && intval($a->argv[2])) { + if (($a->argc > 2) && ($a->argv[1] === "drop") && intval($a->argv[2])) { $r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d AND `is-default` = 0 LIMIT 1", intval($a->argv[2]), intval(local_user()) @@ -34,24 +34,22 @@ function profiles_init(App $a) { intval($a->argv[2]), intval(local_user()) ); - if($r) + if (dbm::is_result($r)) { info(t('Profile deleted.').EOL); + } goaway('profiles'); return; // NOTREACHED } - - - - - if(($a->argc > 1) && ($a->argv[1] === 'new')) { + if (($a->argc > 1) && ($a->argv[1] === 'new')) { check_form_security_token_redirectOnErr('/profiles', 'profile_new', 't'); $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d", intval(local_user())); - $num_profiles = count($r0); + + $num_profiles = (dbm::is_result($r0) ? count($r0) : 0); $name = t('Profile-') . ($num_profiles + 1); @@ -73,19 +71,21 @@ function profiles_init(App $a) { ); info( t('New profile created.') . EOL); - if(count($r3) == 1) - goaway('profiles/'.$r3[0]['id']); + if (dbm::is_result($r3) && count($r3) == 1) { + goaway('profiles/' . $r3[0]['id']); + } goaway('profiles'); } - if(($a->argc > 2) && ($a->argv[1] === 'clone')) { + if (($a->argc > 2) && ($a->argv[1] === 'clone')) { check_form_security_token_redirectOnErr('/profiles', 'profile_clone', 't'); $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d", intval(local_user())); - $num_profiles = count($r0); + + $num_profiles = (dbm::is_result($r0) ? count($r0) : 0); $name = t('Profile-') . ($num_profiles + 1); $r1 = q("SELECT * FROM `profile` WHERE `uid` = %d AND `id` = %d LIMIT 1", @@ -116,8 +116,9 @@ function profiles_init(App $a) { dbesc($name) ); info( t('New profile created.') . EOL); - if ((dbm::is_result($r3)) && (count($r3) == 1)) + if ((dbm::is_result($r3)) && (count($r3) == 1)) { goaway('profiles/'.$r3[0]['id']); + } goaway('profiles'); @@ -125,7 +126,7 @@ function profiles_init(App $a) { } - if(($a->argc > 1) && (intval($a->argv[1]))) { + if (($a->argc > 1) && (intval($a->argv[1]))) { $r = q("SELECT id FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[1]), intval(local_user()) @@ -136,7 +137,7 @@ function profiles_init(App $a) { return; } - profile_load($a,$a->user['nickname'],$r[0]['id']); + profile_load($a,$a->user['nickname'], $r[0]['id']); } @@ -144,15 +145,16 @@ function profiles_init(App $a) { } function profile_clean_keywords($keywords) { - $keywords = str_replace(","," ",$keywords); + $keywords = str_replace(",", " ", $keywords); $keywords = explode(" ", $keywords); $cleaned = array(); foreach ($keywords as $keyword) { $keyword = trim(strtolower($keyword)); $keyword = trim($keyword, "#"); - if ($keyword != "") + if ($keyword != "") { $cleaned[] = $keyword; + } } $keywords = implode(", ", $cleaned); @@ -171,12 +173,12 @@ function profiles_post(App $a) { call_hooks('profile_post', $_POST); - if(($a->argc > 1) && ($a->argv[1] !== "new") && intval($a->argv[1])) { + if (($a->argc > 1) && ($a->argv[1] !== "new") && intval($a->argv[1])) { $orig = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[1]), intval(local_user()) ); - if(! count($orig)) { + if (! dbm::is_result($orig)) { notice( t('Profile not found.') . EOL); return; } @@ -186,38 +188,40 @@ function profiles_post(App $a) { $is_default = (($orig[0]['is-default']) ? 1 : 0); $profile_name = notags(trim($_POST['profile_name'])); - if(! strlen($profile_name)) { + if (! strlen($profile_name)) { notice( t('Profile Name is required.') . EOL); return; } $dob = $_POST['dob'] ? escape_tags(trim($_POST['dob'])) : '0000-00-00'; // FIXME: Needs to be validated? - $y = substr($dob,0,4); - if((! ctype_digit($y)) || ($y < 1900)) + $y = substr($dob, 0, 4); + if ((! ctype_digit($y)) || ($y < 1900)) { $ignore_year = true; - else + } else { $ignore_year = false; - if($dob != '0000-00-00') { - if(strpos($dob,'0000-') === 0) { + } + if ($dob != '0000-00-00') { + if (strpos($dob, '0000-') === 0) { $ignore_year = true; - $dob = substr($dob,5); + $dob = substr($dob, 5); } - $dob = datetime_convert('UTC','UTC',(($ignore_year) ? '1900-' . $dob : $dob),(($ignore_year) ? 'm-d' : 'Y-m-d')); - if($ignore_year) + $dob = datetime_convert('UTC', 'UTC', (($ignore_year) ? '1900-' . $dob : $dob), (($ignore_year) ? 'm-d' : 'Y-m-d')); + + if ($ignore_year) { $dob = '0000-' . $dob; + } } $name = notags(trim($_POST['name'])); - if(! strlen($name)) { + if (! strlen($name)) { $name = '[No Name]'; } - if($orig[0]['name'] != $name) + if ($orig[0]['name'] != $name) { $namechanged = true; - - + } $pdesc = notags(trim($_POST['pdesc'])); $gender = notags(trim($_POST['gender'])); @@ -233,54 +237,42 @@ function profiles_post(App $a) { $with = ((x($_POST,'with')) ? notags(trim($_POST['with'])) : ''); - if(! strlen($howlong)) { + if (! strlen($howlong)) { $howlong = NULL_DATE; } else { - $howlong = datetime_convert(date_default_timezone_get(),'UTC',$howlong); + $howlong = datetime_convert(date_default_timezone_get(), 'UTC', $howlong); } // linkify the relationship target if applicable $withchanged = false; - if(strlen($with)) { - if($with != strip_tags($orig[0]['with'])) { + if (strlen($with)) { + if ($with != strip_tags($orig[0]['with'])) { $withchanged = true; $prf = ''; $lookup = $with; - if(strpos($lookup,'@') === 0) - $lookup = substr($lookup,1); + if (strpos($lookup, '@') === 0) { + $lookup = substr($lookup, 1); + } $lookup = str_replace('_',' ', $lookup); - if(strpos($lookup,'@') || (strpos($lookup,'http://'))) { + if (strpos($lookup, '@') || (strpos($lookup, 'http://'))) { $newname = $lookup; $links = @Probe::lrdd($lookup); - if(count($links)) { - foreach($links as $link) { - if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page') { + if (count($links)) { + foreach ($links as $link) { + if ($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page') { $prf = $link['@attributes']['href']; } } } - } - else { + } else { $newname = $lookup; -/* if(strstr($lookup,' ')) { - $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", - dbesc($newname), - intval(local_user()) - ); - } - else { - $r = q("SELECT * FROM `contact` WHERE `nick` = '%s' AND `uid` = %d LIMIT 1", - dbesc($lookup), - intval(local_user()) - ); - }*/ $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", dbesc($newname), intval(local_user()) ); - if(! $r) { + if (! dbm::is_result($r)) { $r = q("SELECT * FROM `contact` WHERE `nick` = '%s' AND `uid` = %d LIMIT 1", dbesc($lookup), intval(local_user()) @@ -292,16 +284,18 @@ function profiles_post(App $a) { } } - if($prf) { - $with = str_replace($lookup,'' . $newname . '', $with); - if(strpos($with,'@') === 0) - $with = substr($with,1); + if ($prf) { + $with = str_replace($lookup, '' . $newname . '', $with); + if (strpos($with, '@') === 0) { + $with = substr($with, 1); + } } - } - else + } else { $with = $orig[0]['with']; + } } + /// @TODO Not flexible enough for later expansion, let's have more OOP here $sexual = notags(trim($_POST['sexual'])); $xmpp = notags(trim($_POST['xmpp'])); $homepage = notags(trim($_POST['homepage'])); @@ -329,65 +323,65 @@ function profiles_post(App $a) { $hide_friends = (($_POST['hide-friends'] == 1) ? 1: 0); - set_pconfig(local_user(),'system','detailled_profile', (($_POST['detailled_profile'] == 1) ? 1: 0)); + set_pconfig(local_user(), 'system', 'detailled_profile', (($_POST['detailled_profile'] == 1) ? 1: 0)); $changes = array(); $value = ''; - if($is_default) { - if($marital != $orig[0]['marital']) { + if ($is_default) { + if ($marital != $orig[0]['marital']) { $changes[] = '[color=#ff0000]♥[/color] ' . t('Marital Status'); $value = $marital; } - if($withchanged) { + if ($withchanged) { $changes[] = '[color=#ff0000]♥[/color] ' . t('Romantic Partner'); $value = strip_tags($with); } - if($likes != $orig[0]['likes']) { + if ($likes != $orig[0]['likes']) { $changes[] = t('Likes'); $value = $likes; } - if($dislikes != $orig[0]['dislikes']) { + if ($dislikes != $orig[0]['dislikes']) { $changes[] = t('Dislikes'); $value = $dislikes; } - if($work != $orig[0]['work']) { + if ($work != $orig[0]['work']) { $changes[] = t('Work/Employment'); } - if($religion != $orig[0]['religion']) { + if ($religion != $orig[0]['religion']) { $changes[] = t('Religion'); $value = $religion; } - if($politic != $orig[0]['politic']) { + if ($politic != $orig[0]['politic']) { $changes[] = t('Political Views'); $value = $politic; } - if($gender != $orig[0]['gender']) { + if ($gender != $orig[0]['gender']) { $changes[] = t('Gender'); $value = $gender; } - if($sexual != $orig[0]['sexual']) { + if ($sexual != $orig[0]['sexual']) { $changes[] = t('Sexual Preference'); $value = $sexual; } - if($xmpp != $orig[0]['xmpp']) { + if ($xmpp != $orig[0]['xmpp']) { $changes[] = t('XMPP'); $value = $xmpp; } - if($homepage != $orig[0]['homepage']) { + if ($homepage != $orig[0]['homepage']) { $changes[] = t('Homepage'); $value = $homepage; } - if($interest != $orig[0]['interest']) { + if ($interest != $orig[0]['interest']) { $changes[] = t('Interests'); $value = $interest; } - if($address != $orig[0]['address']) { + if ($address != $orig[0]['address']) { $changes[] = t('Address'); // New address not sent in notifications, potential privacy issues // in case this leaks to unintended recipients. Yes, it's in the public // profile but that doesn't mean we have to broadcast it to everybody. } - if($locality != $orig[0]['locality'] || $region != $orig[0]['region'] + if ($locality != $orig[0]['locality'] || $region != $orig[0]['region'] || $country_name != $orig[0]['country-name']) { $changes[] = t('Location'); $comma1 = ((($locality) && ($region || $country_name)) ? ', ' : ' '); @@ -473,11 +467,12 @@ function profiles_post(App $a) { intval(local_user()) ); - if($r) - info( t('Profile updated.') . EOL); + if ($r) { + info(t('Profile updated.') . EOL); + } - if($namechanged && $is_default) { + if ($namechanged && $is_default) { $r = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `self` = 1 AND `uid` = %d", dbesc($name), dbesc(datetime_convert()), @@ -489,7 +484,7 @@ function profiles_post(App $a) { ); } - if($is_default) { + if ($is_default) { $location = formatted_location(array("locality" => $locality, "region" => $region, "country-name" => $country_name)); q("UPDATE `contact` SET `about` = '%s', `location` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `self` AND `uid` = %d", @@ -502,7 +497,7 @@ function profiles_post(App $a) { // Update global directory in background $url = $_SESSION['my_url']; - if ($url && strlen(get_config('system','directory'))) { + if ($url && strlen(get_config('system', 'directory'))) { proc_run(PRIORITY_LOW, "include/directory.php", $url); } @@ -519,14 +514,17 @@ function profiles_post(App $a) { function profile_activity($changed, $value) { $a = get_app(); - if(! local_user() || ! is_array($changed) || ! count($changed)) + if (! local_user() || ! is_array($changed) || ! count($changed)) { return; + } - if($a->user['hidewall'] || get_config('system','block_public')) + if ($a->user['hidewall'] || get_config('system', 'block_public')) { return; + } - if(! get_pconfig(local_user(),'system','post_profilechange')) + if (! get_pconfig(local_user(), 'system', 'post_profilechange')) { return; + } require_once('include/items.php'); @@ -534,8 +532,9 @@ function profile_activity($changed, $value) { intval(local_user()) ); - if(! count($self)) + if (! dbm::is_result($self)) { return; + } $arr = array(); @@ -559,12 +558,13 @@ function profile_activity($changed, $value) { $changes = ''; $t = count($changed); $z = 0; - foreach($changed as $ch) { - if(strlen($changes)) { - if ($z == ($t - 1)) + foreach ($changed as $ch) { + if (strlen($changes)) { + if ($z == ($t - 1)) { $changes .= t(' and '); - else + } else { $changes .= ', '; + } } $z ++; $changes .= $ch; @@ -572,12 +572,12 @@ function profile_activity($changed, $value) { $prof = '[url=' . $self[0]['url'] . '?tab=profile' . ']' . t('public profile') . '[/url]'; - if($t == 1 && strlen($value)) { + if ($t == 1 && strlen($value)) { $message = sprintf( t('%1$s changed %2$s to “%3$s”'), $A, $changes, $value); $message .= "\n\n" . sprintf( t(' - Visit %1$s\'s %2$s'), $A, $prof); - } - else + } else { $message = sprintf( t('%1$s has an updated %2$s, changing %3$s.'), $A, $prof, $changes); + } $arr['body'] = $message; @@ -610,7 +610,7 @@ function profiles_content(App $a) { $o = ''; - if(($a->argc > 1) && (intval($a->argv[1]))) { + if (($a->argc > 1) && (intval($a->argv[1]))) { $r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[1]), intval(local_user()) @@ -649,15 +649,16 @@ function profiles_content(App $a) { $personal_account = !(in_array($a->user["page-flags"], array(PAGE_COMMUNITY, PAGE_PRVGROUP))); - $detailled_profile = (get_pconfig(local_user(),'system','detailled_profile') AND $personal_account); + $detailled_profile = (get_pconfig(local_user(), 'system', 'detailled_profile') AND $personal_account); - $f = get_config('system','birthday_input_format'); - if(! $f) + $f = get_config('system', 'birthday_input_format'); + if (! $f) { $f = 'ymd'; + } $is_default = (($r[0]['is-default']) ? 1 : 0); $tpl = get_markup_template("profile_edit.tpl"); - $o .= replace_macros($tpl,array( + $o .= replace_macros($tpl, array( '$personal_account' => $personal_account, '$detailled_profile' => $detailled_profile, @@ -666,13 +667,13 @@ function profiles_content(App $a) { t('Show more profile fields:'), //Label $detailled_profile, //Value '', //Help string - array(t('No'),t('Yes')) //Off - On strings + array(t('No'), t('Yes')) //Off - On strings ), - '$multi_profiles' => feature_enabled(local_user(),'multi_profiles'), + '$multi_profiles' => feature_enabled(local_user(), 'multi_profiles'), '$form_security_token' => get_form_security_token("profile_edit"), '$form_security_token_photo' => get_form_security_token("profile_photo"), - '$profile_clone_link' => ((feature_enabled(local_user(),'multi_profiles')) ? 'profiles/clone/' . $r[0]['id'] . '?t=' . get_form_security_token("profile_clone") : ""), + '$profile_clone_link' => ((feature_enabled(local_user(), 'multi_profiles')) ? 'profiles/clone/' . $r[0]['id'] . '?t=' . get_form_security_token("profile_clone") : ""), '$profile_drop_link' => 'profiles/drop/' . $r[0]['id'] . '?t=' . get_form_security_token("profile_drop"), '$profile_action' => t('Profile Actions'), @@ -748,25 +749,22 @@ function profiles_content(App $a) { call_hooks('profile_edit', $arr); return $o; - } + } else { - //Profiles list. - else { - - //If we don't support multi profiles, don't display this list. - if(!feature_enabled(local_user(),'multi_profiles')){ - $r = q( - "SELECT * FROM `profile` WHERE `uid` = %d AND `is-default`=1", + // If we don't support multi profiles, don't display this list. + if (!feature_enabled(local_user(), 'multi_profiles')) { + $r = q("SELECT * FROM `profile` WHERE `uid` = %d AND `is-default`=1", local_user() ); - if (dbm::is_result($r)){ + if (dbm::is_result($r)) { //Go to the default profile. - goaway('profiles/'.$r[0]['id']); + goaway('profiles/' . $r[0]['id']); } } $r = q("SELECT * FROM `profile` WHERE `uid` = %d", local_user()); + if (dbm::is_result($r)) { $tpl = get_markup_template('profile_entry.tpl'); diff --git a/testargs.php b/testargs.php index a6042f8eb..a0ddea345 100644 --- a/testargs.php +++ b/testargs.php @@ -15,7 +15,8 @@ */ -if(($_SERVER["argc"] > 1) && isset($_SERVER["argv"][1])) +if (($_SERVER["argc"] > 1) && isset($_SERVER["argv"][1])) { echo $_SERVER["argv"][1]; -else +} else { echo ''; +} diff --git a/update.php b/update.php index 3bce49268..8404f5bf2 100644 --- a/update.php +++ b/update.php @@ -148,7 +148,7 @@ function update_1014() { if (dbm::is_result($r)) { foreach ($r as $rr) { $ph = new Photo($rr['data']); - if($ph->is_valid()) { + if ($ph->is_valid()) { $ph->scaleImage(48); $ph->store($rr['uid'],$rr['contact-id'],$rr['resource-id'],$rr['filename'],$rr['album'],6,(($rr['profile']) ? 1 : 0)); } @@ -308,9 +308,9 @@ function update_1030() { function update_1031() { // Repair any bad links that slipped into the item table $r = q("SELECT `id`, `object` FROM `item` WHERE `object` != '' "); - if($r && dbm::is_result($r)) { + if (dbm::is_result($r)) { foreach ($r as $rr) { - if(strstr($rr['object'],'type="http')) { + if (strstr($rr['object'],'type="http')) { q("UPDATE `item` SET `object` = '%s' WHERE `id` = %d", dbesc(str_replace('type="http','href="http',$rr['object'])), intval($rr['id']) @@ -326,22 +326,23 @@ function update_1032() { function update_1033() { q("CREATE TABLE IF NOT EXISTS `cache` ( - `k` CHAR( 255 ) NOT NULL PRIMARY KEY , - `v` TEXT NOT NULL, - `updated` DATETIME NOT NULL - ) ENGINE = MYISAM DEFAULT CHARSET=utf8 "); + `k` CHAR( 255 ) NOT NULL PRIMARY KEY , + `v` TEXT NOT NULL, + `updated` DATETIME NOT NULL + ) DEFAULT CHARSET=utf8 "); } function update_1034() { - // If you have any of these parent-less posts they can cause problems, and - // we need to delete them. You can't see them anyway. - // Legitimate items will usually get re-created on the next - // pull from the hub. - // But don't get rid of a post that may have just come in - // and may not yet have the parent id set. - + /* + * If you have any of these parent-less posts they can cause problems, and + * we need to delete them. You can't see them anyway. + * Legitimate items will usually get re-created on the next + * pull from the hub. + * But don't get rid of a post that may have just come in + * and may not yet have the parent id set. + */ q("DELETE FROM `item` WHERE `parent` = 0 AND `created` < UTC_TIMESTAMP() - INTERVAL 2 MINUTE"); } @@ -1671,7 +1672,7 @@ function update_1190() { $plugins = get_config('system','addon'); $plugins_arr = array(); - if($plugins) { + if ($plugins) { $plugins_arr = explode(",",str_replace(" ", "",$plugins)); $idx = array_search($plugin, $plugins_arr); diff --git a/util/po2php.php b/util/po2php.php index 30d77342b..75442406a 100644 --- a/util/po2php.php +++ b/util/po2php.php @@ -12,117 +12,140 @@ function po2php_run(&$argv, &$argc) { $pofile = $argv[1]; $outfile = dirname($pofile)."/strings.php"; - if(strstr($outfile,'util')) + if (strstr($outfile, 'util')) { $lang = 'en'; - else + } else { $lang = str_replace('-','_',basename(dirname($pofile))); + } - - - if (!file_exists($pofile)){ + if (!file_exists($pofile)) { print "Unable to find '$pofile'\n"; return; } print "Out to '$outfile'\n"; - $out="strings["' . $k . '"] = '; + } + if ($inv) { + $inv = false; + $out .= '"' . $v . '"'; + } - - - if ($k!="" && substr($l,0,7)=="msgstr "){ - if ($ink) { $ink = False; $out .= '$a->strings["'.$k.'"] = '; } - if ($inv) { $inv = False; $out .= '"'.$v.'"'; } - - $v = substr($l,8,$len-10); - $v = preg_replace_callback($escape_s_exp,'escape_s',$v); - $inv = True; + $v = substr($l, 8, $len - 10); + $v = preg_replace_callback($escape_s_exp, 'escape_s', $v); + $inv = true; //$out .= $v; } - if ($k!="" && substr($l,0,7)=="msgstr["){ - if ($ink) { $ink = False; $out .= '$a->strings["'.$k.'"] = '; } - if ($inv) { $inv = False; $out .= '"'.$v.'"'; } + if ($k != "" && substr($l, 0, 7) == "msgstr[") { + if ($ink) { + $ink = false; + $out .= '$a->strings["' . $k . '"] = '; + } + if ($inv) { + $inv = false; + $out .= '"' . $v . '"'; + } if (!$arr) { $arr=True; $out .= "array(\n"; } - $match=Array(); + $match = array(); preg_match("|\[([0-9]*)\] (.*)|", $l, $match); - $out .= "\t". - preg_replace_callback($escape_s_exp,'escape_s',$match[1]) - ." => " - .preg_replace_callback($escape_s_exp,'escape_s',$match[2]) .",\n"; + $out .= "\t" + . preg_replace_callback($escape_s_exp, 'escape_s', $match[1]) + . " => " + . preg_replace_callback($escape_s_exp, 'escape_s', $match[2]) + . ",\n"; } - if (substr($l,0,6)=="msgid_") { $ink = False; $out .= '$a->strings["'.$k.'"] = '; }; - + if (substr($l, 0, 6) == "msgid_") { + $ink = false; + $out .= '$a->strings["' . $k . '"] = '; + } if ($ink) { - $k .= trim($l,"\"\r\n"); - $k = preg_replace_callback($escape_s_exp,'escape_s',$k); + $k .= trim($l, "\"\r\n"); + $k = preg_replace_callback($escape_s_exp, 'escape_s', $k); //$out .= '$a->strings['.$k.'] = '; } - if (substr($l,0,6)=="msgid "){ - if ($inv) { $inv = False; $out .= '"'.$v.'"'; } - if ($k!="") $out .= $arr?");\n":";\n"; - $arr=False; - $k = str_replace("msgid ","",$l); - if ($k != '""' ) { - $k = trim($k,"\"\r\n"); + if (substr($l, 0, 6) == "msgid ") { + if ($inv) { + $inv = false; + $out .= '"' . $v . '"'; + } + if ($k != "") { + $out .= ($arr) ? ");\n" : ";\n"; + } + $arr = false; + $k = str_replace("msgid ", "", $l); + if ($k != '""') { + $k = trim($k, "\"\r\n"); } else { $k = ""; } - $k = preg_replace_callback($escape_s_exp,'escape_s',$k); - $ink = True; + $k = preg_replace_callback($escape_s_exp, 'escape_s', $k); + $ink = true; } - if ($inv && substr($l,0,6)!="msgstr") { - $v .= trim($l,"\"\r\n"); - $v = preg_replace_callback($escape_s_exp,'escape_s',$v); + if ($inv && substr($l, 0, 6) != "msgstr") { + $v .= trim($l, "\"\r\n"); + $v = preg_replace_callback($escape_s_exp, 'escape_s', $v); //$out .= '$a->strings['.$k.'] = '; } } - if ($inv) { $inv = False; $out .= '"'.$v.'"'; } - if ($k!="") $out .= $arr?");\n":";\n"; + if ($inv) { + $inv = false; + $out .= '"' . $v . '"'; + } + if ($k != "") { + $out .= ($arr ? ");\n" : ";\n"); + } $out = str_replace(DQ_ESCAPE, '\"', $out); file_put_contents($outfile, $out); } -if (array_search(__file__,get_included_files())===0){ - po2php_run($_SERVER["argv"],$_SERVER["argc"]); +if (array_search(__FILE__, get_included_files()) === 0) { + po2php_run($_SERVER["argv"],$_SERVER["argc"]); } diff --git a/view/theme/vier/theme.php b/view/theme/vier/theme.php index a35afa719..a42dfe6e1 100644 --- a/view/theme/vier/theme.php +++ b/view/theme/vier/theme.php @@ -9,9 +9,9 @@ * Description: "Vier" is a very compact and modern theme. It uses the font awesome font library: http://fortawesome.github.com/Font-Awesome/ */ -require_once("include/plugin.php"); -require_once("include/socgraph.php"); -require_once("mod/proxy.php"); +require_once "include/plugin.php"; +require_once "include/socgraph.php"; +require_once "mod/proxy.php"; function vier_init(App $a) { @@ -101,8 +101,9 @@ EOT; } // Hide the left menu bar + /// @TODO maybe move this static array out where it should belong? if (($a->page['aside'] == "") AND in_array($a->argv[0], array("community", "events", "help", "manage", "notifications", - "probe", "webfinger", "login", "invite", "credits"))) { + "probe", "webfinger", "login", "invite", "credits"))) { $a->page['htmlhead'] .= ""; } } @@ -110,13 +111,15 @@ EOT; function get_vier_config($key, $default = false, $admin = false) { if (local_user() AND !$admin) { $result = get_pconfig(local_user(), "vier", $key); - if ($result !== false) + if ($result !== false) { return $result; + } } $result = get_config("vier", $key); - if ($result !== false) + if ($result !== false) { return $result; + } return $default; } @@ -131,7 +134,7 @@ function vier_community_info() { $show_friends = get_vier_config("show_friends", 1); $show_lastusers = get_vier_config("show_lastusers", 1); - //get_baseurl + // get_baseurl $url = App::get_baseurl($ssl_state); $aside['$url'] = $url; @@ -161,7 +164,7 @@ function vier_community_info() { // last 9 users if ($show_lastusers) { - $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 "); + $publish = (get_config('system', 'publish_all') ? '' : " AND `publish` = 1 "); $order = " ORDER BY `register_date` DESC "; $tpl = get_markup_template('ch_directory_item.tpl'); @@ -191,12 +194,12 @@ function vier_community_info() { //right_aside FIND FRIENDS if ($show_friends AND local_user()) { $nv = array(); - $nv['title'] = Array("", t('Find Friends'), "", ""); - $nv['directory'] = Array('directory', t('Local Directory'), "", ""); + $nv['title'] = array("", t('Find Friends'), "", ""); + $nv['directory'] = array('directory', t('Local Directory'), "", ""); $nv['global_directory'] = Array(get_server(), t('Global Directory'), "", ""); - $nv['match'] = Array('match', t('Similar Interests'), "", ""); - $nv['suggest'] = Array('suggest', t('Friend Suggestions'), "", ""); - $nv['invite'] = Array('invite', t('Invite Friends'), "", ""); + $nv['match'] = array('match', t('Similar Interests'), "", ""); + $nv['suggest'] = array('suggest', t('Friend Suggestions'), "", ""); + $nv['invite'] = array('invite', t('Invite Friends'), "", ""); $nv['search'] = '
@@ -211,10 +214,11 @@ function vier_community_info() { //Community_Pages at right_aside if ($show_pages AND local_user()) { - require_once('include/ForumManager.php'); + require_once 'include/ForumManager.php'; - if (x($_GET['cid']) && intval($_GET['cid']) != 0) + if (x($_GET, 'cid') && intval($_GET['cid']) != 0) { $cid = $_GET['cid']; + } //sort by last updated item $lastitem = true; @@ -227,18 +231,18 @@ function vier_community_info() { $id = 0; - foreach($contacts as $contact) { + foreach ($contacts as $contact) { $selected = (($cid == $contact['id']) ? ' forum-selected' : ''); $entry = array( - 'url' => 'network?f=&cid=' . $contact['id'], + 'url' => 'network?f=&cid=' . $contact['id'], 'external_url' => 'redir/' . $contact['id'], - 'name' => $contact['name'], - 'cid' => $contact['id'], - 'selected' => $selected, - 'micro' => App::remove_baseurl(proxy_url($contact['micro'], false, PROXY_SIZE_MICRO)), - 'id' => ++$id, + 'name' => $contact['name'], + 'cid' => $contact['id'], + 'selected' => $selected, + 'micro' => App::remove_baseurl(proxy_url($contact['micro'], false, PROXY_SIZE_MICRO)), + 'id' => ++$id, ); $entries[] = $entry; } @@ -246,21 +250,21 @@ function vier_community_info() { $tpl = get_markup_template('widget_forumlist_right.tpl'); - $page .= replace_macros($tpl,array( - '$title' => t('Forums'), - '$forums' => $entries, - '$link_desc' => t('External link to forum'), - '$total' => $total, + $page .= replace_macros($tpl, array( + '$title' => t('Forums'), + '$forums' => $entries, + '$link_desc' => t('External link to forum'), + '$total' => $total, '$visible_forums' => $visible_forums, - '$showmore' => t('show more'), + '$showmore' => t('show more'), )); $aside['$page'] = $page; } } - //END Community Page + // END Community Page - //helpers + // helpers if ($show_helpers) { $r = array(); @@ -283,14 +287,14 @@ function vier_community_info() { foreach ($r AS $index => $helper) $r[$index]["url"] = zrl($helper["url"]); - $r[] = Array("url" => "help/Quick-Start-guide", "name" => t("Quick Start")); + $r[] = array("url" => "help/Quick-Start-guide", "name" => t("Quick Start")); $tpl = get_markup_template('ch_helpers.tpl'); if ($r) { $helpers = array(); - $helpers['title'] = Array("", t('Help'), "", ""); + $helpers['title'] = array("", t('Help'), "", ""); $aside['$helpers_items'] = array(); @@ -305,9 +309,9 @@ function vier_community_info() { $aside['$helpers'] = $helpers; } } - //end helpers + // end helpers - //connectable services + // connectable services if ($show_services) { /// @TODO This whole thing is hard-coded, better rewrite to Intercepting Filter Pattern (future-todo) @@ -345,6 +349,7 @@ function vier_community_info() { $r[] = array("photo" => "images/googleplus.png", "name" => "Google+"); } + /// @TODO old-lost code (and below)? //if (plugin_enabled("ijpost")) { // $r[] = array("photo" => "images/", "name" => ""); //} @@ -382,7 +387,7 @@ function vier_community_info() { if (dbm::is_result($r)) { $con_services = array(); - $con_services['title'] = Array("", t('Connect Services'), "", ""); + $con_services['title'] = array("", t('Connect Services'), "", ""); $aside['$con_services'] = $con_services; foreach ($r as $rr) {