diff options
-rw-r--r-- | boot.php | 35 | ||||
-rw-r--r-- | include/bbcode.php | 6 | ||||
-rw-r--r-- | include/security.php | 8 | ||||
-rw-r--r-- | include/text.php | 7 | ||||
-rw-r--r-- | mod/amcd.php | 49 | ||||
-rw-r--r-- | mod/api.php | 2 | ||||
-rw-r--r-- | mod/babel.php | 75 | ||||
-rw-r--r-- | mod/content.php | 858 | ||||
-rw-r--r-- | mod/friendika.php | 11 | ||||
-rw-r--r-- | mod/localtime.php | 49 | ||||
-rw-r--r-- | mod/network.php | 12 | ||||
-rw-r--r-- | mod/notes.php | 143 | ||||
-rw-r--r-- | mod/openid.php | 96 | ||||
-rw-r--r-- | mod/ping.php | 2 | ||||
-rw-r--r-- | mod/profile.php | 86 | ||||
-rw-r--r-- | mod/pubsub.php | 153 | ||||
-rw-r--r-- | mod/rsd_xml.php | 4 | ||||
-rw-r--r-- | mod/salmon.php | 229 | ||||
-rw-r--r-- | mod/session.php | 5 | ||||
-rw-r--r-- | version.inc | 2 | ||||
-rw-r--r-- | view/theme/duepuntozero/css/style.css | 50 | ||||
-rw-r--r-- | view/tpl/field_input.tpl | 5 | ||||
-rw-r--r-- | view/tpl/login.tpl | 6 |
23 files changed, 87 insertions, 1806 deletions
@@ -907,14 +907,19 @@ function get_guid($size=16) { // returns the complete html for inserting into the page if(! function_exists('login')) { - function login($register = false, $hiddens=false) { + function login($register = false, $form_id = 'main-login', $hiddens=false) { $a = get_app(); $o = ""; $reg = false; + $reglink = get_config('system','register_link'); + if(! strlen($reglink)) + $reglink = 'zregister'; + if ($register) { $reg = array( 'title' => t('Create a New Account'), - 'desc' => t('Register') + 'desc' => t('Register'), + 'link' => $reglink ); } @@ -930,7 +935,7 @@ if(! function_exists('login')) { $tpl = get_markup_template("login.tpl"); if(strlen($a->query_string)) - $_SESSION['return_url'] = $a->query_string; + $_SESSION['login_return_url'] = $a->query_string; } @@ -939,7 +944,7 @@ if(! function_exists('login')) { '$dest_url' => $dest_url, '$logout' => t('Logout'), '$login' => t('Login'), - + '$form_id' => $form_id, '$lname' => array('username', t('Email') , '', ''), '$lpassword' => array('password', t('Password'), '', ''), @@ -1594,13 +1599,14 @@ if(! function_exists('feed_birthday')) { } if(! function_exists('is_site_admin')) { - function is_site_admin() { - $a = get_app(); - if(local_user() && x($a->user,'email') && x($a->config,'admin_email') && ($a->user['email'] === $a->config['admin_email'])) - return true; - return false; - } -} +function is_site_admin() { + $a = get_app(); + if((intval($_SESSION['authenticated'])) + && (is_array($a->account)) + && ($a->account['account_roles'] & ACCOUNT_ROLE_ADMIN)) + return true; + return false; +}} if(! function_exists('load_contact_links')) { @@ -1673,13 +1679,6 @@ if(! function_exists('profile_tabs')){ 'title' => t('Events and Calendar'), 'id' => 'events-tab', ); - $tabs[] = array( - 'label' => t('Personal Notes'), - 'url' => $a->get_baseurl() . '/notes', - 'sel' =>((!isset($tab)&&$a->argv[0]=='notes')?'active':''), - 'title' => t('Only You Can See This'), - 'id' => 'notes-tab', - ); } diff --git a/include/bbcode.php b/include/bbcode.php index f43d2f547..8ee6a4ee0 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -185,12 +185,6 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '<a href="$1" target="external-link">$2</a>', $Text); //$Text = preg_replace("/\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[\/url\]/ism", '<a href="$1" target="_blank">$2</a>', $Text); - // we may need to restrict this further if it picks up too many strays - // link acct:user@host to a webfinger profile redirector - - $Text = preg_replace('/acct:(.*?)@(.*?)([ ,])/', '<a href="' . $a->get_baseurl() . '/acctlink?addr=' . "$1@$2" - . '" target="extlink" >acct:' . "$1@$2$3" . '</a>',$Text); - // Perform MAIL Search $Text = preg_replace("/\[mail\]([$MAILSearchString]*)\[\/mail\]/", '<a href="mailto:$1">$1</a>', $Text); $Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.*?)\[\/mail\]/", '<a href="mailto:$1">$2</a>', $Text); diff --git a/include/security.php b/include/security.php index 5302639d4..4141d0948 100644 --- a/include/security.php +++ b/include/security.php @@ -136,11 +136,9 @@ function authenticate_success($user_record, $login_initial = false, $interactive return; } - -unset($_SESSION['return_url']); - if(($a->module !== 'home') && isset($_SESSION['return_url']) && strlen($_SESSION['return_url'])) { - $return_url = $_SESSION['return_url']; - unset($_SESSION['return_url']); + if(($a->module !== 'home') && x($_SESSION,'login_return_url') && strlen($_SESSION['login_return_url'])) { + $return_url = $_SESSION['login_return_url']; + unset($_SESSION['login_return_url']); goaway($a->get_baseurl() . '/' . $return_url); } diff --git a/include/text.php b/include/text.php index 79b4bba39..a1b718d44 100644 --- a/include/text.php +++ b/include/text.php @@ -1681,3 +1681,10 @@ function check_webbie($arr) { return ''; } + +function ids_to_querystr($arr,$idx = 'id') { + $t = array(); + foreach($arr as $x) + $t[] = $x[$idx]; + return(implode(',', $t)); +}
\ No newline at end of file diff --git a/mod/amcd.php b/mod/amcd.php deleted file mode 100644 index a2a1327e6..000000000 --- a/mod/amcd.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -function amcd_content(&$a) { -//header("Content-type: text/json"); -echo <<< EOT -{ - "version":1, - "sessionstatus":{ - "method":"GET", - "path":"/session" - }, - "auth-methods": { - "username-password-form": { - "connect": { - "method":"POST", - "path":"/login", - "params": { - "username":"login-name", - "password":"password" - }, - "onsuccess": { "action":"reload" } - }, - "disconnect": { - "method":"GET", - "path":"\/logout" - } - } - } - "methods": { - "username-password-form": { - "connect": { - "method":"POST", - "path":"\/login", - "params": { - "username":"login-name", - "password":"password" - }, - "onsuccess": { "action":"reload" } - }, - "disconnect": { - "method":"GET", - "path":"\/logout" - } - } - } -} -EOT; -killme(); -}
\ No newline at end of file diff --git a/mod/api.php b/mod/api.php index ad75e6620..4fa911f14 100644 --- a/mod/api.php +++ b/mod/api.php @@ -87,7 +87,7 @@ function api_content(&$a) { if(! local_user()) { //TODO: we need login form to redirect to this page notice( t('Please login to continue.') . EOL ); - return login(false,$request->get_parameters()); + return login(false,'api-login',$request->get_parameters()); } //FKOAuth1::loginUser(4); diff --git a/mod/babel.php b/mod/babel.php deleted file mode 100644 index ca2c068f8..000000000 --- a/mod/babel.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -require_once('include/bbcode.php'); -require_once('library/markdown.php'); -require_once('include/bb2diaspora.php'); -require_once('include/html2bbcode.php'); - -function visible_lf($s) { - return str_replace("\n",'<br />', $s); -} - -function babel_content(&$a) { - - $o .= '<h3>Babel Diagnostic</h3>'; - - $o .= '<form action="babel" method="post">'; - $o .= t('Source (bbcode) text:') . EOL . '<textarea name="text" >' . htmlspecialchars($_REQUEST['text']) .'</textarea>' . EOL; - $o .= '<input type="submit" name="submit" value="Submit" /></form>'; - - $o .= '<br /><br />'; - - $o .= '<form action="babel" method="post">'; - $o .= t('Source (Diaspora) text to convert to BBcode:') . EOL . '<textarea name="d2bbtext" >' . htmlspecialchars($_REQUEST['d2bbtext']) .'</textarea>' . EOL; - $o .= '<input type="submit" name="submit" value="Submit" /></form>'; - - $o .= '<br /><br />'; - - if(x($_REQUEST,'text')) { - - $text = trim($_REQUEST['text']); - $o .= t("Source input: ") . EOL. EOL; - $o .= visible_lf($text) . EOL. EOL; - - $html = bbcode($text); - $o .= t("bb2html: ") . EOL. EOL; - $o .= $html. EOL. EOL; - - $bbcode = html2bbcode($html); - $o .= t("bb2html2bb: ") . EOL. EOL; - $o .= visible_lf($bbcode) . EOL. EOL; - - $diaspora = bb2diaspora($text); - $o .= t("bb2md: ") . EOL. EOL; - $o .= visible_lf($diaspora) . EOL. EOL; - - $html = Markdown($diaspora); - $o .= t("bb2md2html: ") . EOL. EOL; - $o .= $html. EOL. EOL; - - $bbcode = diaspora2bb($diaspora); - $o .= t("bb2dia2bb: ") . EOL. EOL; - $o .= visible_lf($bbcode) . EOL. EOL; - - $bbcode = html2bbcode($html); - $o .= t("bb2md2html2bb: ") . EOL. EOL; - $o .= visible_lf($bbcode) . EOL. EOL; - - - - } - - if(x($_REQUEST,'d2bbtext')) { - - $d2bbtext = trim($_REQUEST['d2bbtext']); - $o .= t("Source input (Diaspora format): ") . EOL. EOL; - $o .= visible_lf($d2bbtext) . EOL. EOL; - - - $bb = diaspora2bb($d2bbtext); - $o .= t("diaspora2bb: ") . EOL. EOL; - $o .= visible_lf($bb) . EOL. EOL; - } - - return $o; -} diff --git a/mod/content.php b/mod/content.php deleted file mode 100644 index dc82b2b2f..000000000 --- a/mod/content.php +++ /dev/null @@ -1,858 +0,0 @@ -<?php - -// This is a purely experimental module and is not yet generally useful. - -// The eventual goal is to provide a json backend to fetch content and fill the current page. -// The page will be filled in on the frontend using javascript. -// At the present time this page is based on "network", but the hope is to extend to serving -// any content (wall, community, search, etc.). -// All search parameters, etc. will be managed in javascript and sent as request params. -// Security will be managed on the backend. -// There is no "pagination query", but we will manage the "current page" on the client -// and provide a link to fetch the next page - until there are no pages left to fetch. - -// With the exception of complex tag and text searches, this prototype is incredibly -// fast - e.g. one or two milliseconds to fetch parent items for the current content, -// and 10-20 milliseconds to fetch all the child items. - - -function content_content(&$a, $update = 0) { - - require_once('include/conversation.php'); - - - // Currently security is based on the logged in user - - if(! local_user()) { - return; - } - - $arr = array('query' => $a->query_string); - - call_hooks('content_content_init', $arr); - - - $datequery = $datequery2 = ''; - - $group = 0; - - $nouveau = false; - - if($a->argc > 1) { - for($x = 1; $x < $a->argc; $x ++) { - if(is_a_date_arg($a->argv[$x])) { - if($datequery) - $datequery2 = escape_tags($a->argv[$x]); - else { - $datequery = escape_tags($a->argv[$x]); - $_GET['order'] = 'post'; - } - } - elseif($a->argv[$x] === 'new') { - $nouveau = true; - } - elseif(intval($a->argv[$x])) { - $group = intval($a->argv[$x]); - $def_acl = array('allow_gid' => '<' . $group . '>'); - } - } - } - - - $o = ''; - - - - $contact_id = $a->cid; - - require_once('include/acl_selectors.php'); - - $cid = ((x($_GET,'cid')) ? intval($_GET['cid']) : 0); - $star = ((x($_GET,'star')) ? intval($_GET['star']) : 0); - $order = ((x($_GET,'order')) ? notags($_GET['order']) : 'comment'); - $liked = ((x($_GET,'liked')) ? intval($_GET['liked']) : 0); - $conv = ((x($_GET,'conv')) ? intval($_GET['conv']) : 0); - $spam = ((x($_GET,'spam')) ? intval($_GET['spam']) : 0); - $nets = ((x($_GET,'nets')) ? $_GET['nets'] : ''); - $cmin = ((x($_GET,'cmin')) ? intval($_GET['cmin']) : 0); - $cmax = ((x($_GET,'cmax')) ? intval($_GET['cmax']) : 99); - $file = ((x($_GET,'file')) ? $_GET['file'] : ''); - - - - if(x($_GET,'search') || x($_GET,'file')) - $nouveau = true; - if($cid) - $def_acl = array('allow_cid' => '<' . intval($cid) . '>'); - - if($nets) { - $r = q("select id from contact where uid = %d and network = '%s' and self = 0", - intval(local_user()), - dbesc($nets) - ); - - $str = ''; - if(count($r)) - foreach($r as $rr) - $str .= '<' . $rr['id'] . '>'; - if(strlen($str)) - $def_acl = array('allow_cid' => $str); - } - - - $sql_options = (($star) ? " and starred = 1 " : ''); - - $sql_nets = (($nets) ? sprintf(" and `contact`.`network` = '%s' ", dbesc($nets)) : ''); - - $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` $sql_options ) "; - - if($group) { - $r = q("SELECT `name`, `id` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($group), - intval($_SESSION['uid']) - ); - if(! count($r)) { - if($update) - killme(); - notice( t('No such group') . EOL ); - goaway($a->get_baseurl(true) . '/network'); - // NOTREACHED - } - - $contacts = expand_groups(array($group)); - if((is_array($contacts)) && count($contacts)) { - $contact_str = implode(',',$contacts); - } - else { - $contact_str = ' 0 '; - info( t('Group is empty')); - } - - $sql_extra = " AND `item`.`parent` IN ( SELECT DISTINCT(`parent`) FROM `item` WHERE 1 $sql_options AND ( `contact-id` IN ( $contact_str ) OR `allow_gid` like '" . protect_sprintf('%<' . intval($group) . '>%') . "' ) and deleted = 0 ) "; - $o = '<h2>' . t('Group: ') . $r[0]['name'] . '</h2>' . $o; - } - elseif($cid) { - - $r = q("SELECT `id`,`name`,`network`,`writable`,`nurl` FROM `contact` WHERE `id` = %d - AND `blocked` = 0 AND `pending` = 0 LIMIT 1", - intval($cid) - ); - if(count($r)) { - $sql_extra = " AND `item`.`parent` IN ( SELECT DISTINCT(`parent`) FROM `item` WHERE 1 $sql_options AND `contact-id` = " . intval($cid) . " and deleted = 0 ) "; - - } - else { - killme(); - } - } - - - $sql_extra3 = ''; - - if($datequery) { - $sql_extra3 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery)))); - } - if($datequery2) { - $sql_extra3 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2)))); - } - - $sql_extra2 = (($nouveau) ? '' : " AND `item`.`parent` = `item`.`id` "); - $sql_extra3 = (($nouveau) ? '' : $sql_extra3); - - if(x($_GET,'search')) { - $search = escape_tags($_GET['search']); - if (get_config('system','use_fulltext_engine')) { - if(strpos($search,'#') === 0) - $sql_extra .= sprintf(" AND (MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode)) ", - dbesc(protect_sprintf($search)) - ); - else - $sql_extra .= sprintf(" AND (MATCH(`item`.`body`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode)) ", - dbesc(protect_sprintf($search)), - dbesc(protect_sprintf($search)) - ); - } else { - $sql_extra .= sprintf(" AND ( `item`.`body` like '%s' OR `item`.`tag` like '%s' ) ", - dbesc(protect_sprintf('%' . $search . '%')), - dbesc(protect_sprintf('%]' . $search . '[%')) - ); - } - } - if(strlen($file)) { - $sql_extra .= file_tag_file_query('item',unxmlify($file)); - } - - if($conv) { - $myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname']; - $myurl = substr($myurl,strpos($myurl,'://')+3); - $myurl = str_replace('www.','',$myurl); - $diasp_url = str_replace('/profile/','/u/',$myurl); - if (get_config('system','use_fulltext_engine')) - $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ", - dbesc(protect_sprintf($myurl)), - dbesc(protect_sprintf($myurl)), - dbesc(protect_sprintf($diasp_url)) - ); - else - $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ", - dbesc(protect_sprintf('%' . $myurl)), - dbesc(protect_sprintf('%' . $myurl . ']%')), - dbesc(protect_sprintf('%' . $diasp_url . ']%')) - ); - - } - - $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage'])); - - - - - if($nouveau) { - // "New Item View" - show all items unthreaded in reverse created date order - - $items = q("SELECT `item`.*, `item`.`id` AS `item_id`, - `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`, - `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, - `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` - FROM `item`, `contact` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 - AND `item`.`deleted` = 0 and `item`.`moderated` = 0 - $simple_update - AND `contact`.`id` = `item`.`contact-id` - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - $sql_extra $sql_nets - ORDER BY `item`.`received` DESC $pager_sql ", - intval($_SESSION['uid']) - ); - - } - else { - - // Normal conversation view - - - if($order === 'post') - $ordering = "`created`"; - else - $ordering = "`commented`"; - - $start = dba_timer(); - - $r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact_uid` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 - AND `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - AND `item`.`parent` = `item`.`id` - $sql_extra3 $sql_extra $sql_nets - ORDER BY `item`.$ordering DESC $pager_sql ", - intval(local_user()) - ); - - $first = dba_timer(); - - - // Then fetch all the children of the parents that are on this page - - $parents_arr = array(); - $parents_str = ''; - - if(count($r)) { - foreach($r as $rr) - if(! in_array($rr['item_id'],$parents_arr)) - $parents_arr[] = $rr['item_id']; - $parents_str = implode(', ', $parents_arr); - - $items = q("SELECT `item`.*, `item`.`id` AS `item_id`, - `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`writable`, - `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, - `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` - FROM `item`, `contact` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 - AND `item`.`moderated` = 0 AND `contact`.`id` = `item`.`contact-id` - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - AND `item`.`parent` IN ( %s ) - $sql_extra ", - intval(local_user()), - dbesc($parents_str) - ); - - $second = dba_timer(); - - $items = fetch_post_tags($items); - $items = conv_sort($items,$ordering); - - } else { - $items = array(); - } - } - - - logger('parent dba_timer: ' . sprintf('%01.4f',$first - $start)); - logger('child dba_timer: ' . sprintf('%01.4f',$second - $first)); - - // Set this so that the conversation function can find out contact info for our wall-wall items - $a->page_contact = $a->contact; - - $mode = (($nouveau) ? 'network-new' : 'network'); - - $o = render_content($a,$items,$mode,false); - - - header('Content-type: application/json'); - echo json_encode($o); - killme(); -} - - - -function render_content(&$a, $items, $mode, $update, $preview = false) { - - - require_once('bbcode.php'); - - $ssl_state = ((local_user()) ? true : false); - - $profile_owner = 0; - $page_writeable = false; - - $previewing = (($preview) ? ' preview ' : ''); - - if($mode === 'network') { - $profile_owner = local_user(); - $page_writeable = true; - } - - if($mode === 'profile') { - $profile_owner = $a->profile['profile_uid']; - $page_writeable = can_write_wall($a,$profile_owner); - } - - if($mode === 'notes') { - $profile_owner = local_user(); - $page_writeable = true; - } - - if($mode === 'display') { - $profile_owner = $a->profile['uid']; - $page_writeable = can_write_wall($a,$profile_owner); - } - - if($mode === 'community') { - $profile_owner = 0; - $page_writeable = false; - } - - if($update) - $return_url = $_SESSION['return_url']; - else - $return_url = $_SESSION['return_url'] = $a->query_string; - - load_contact_links(local_user()); - - $cb = array('items' => $items, 'mode' => $mode, 'update' => $update, 'preview' => $preview); - call_hooks('conversation_start',$cb); - - $items = $cb['items']; - - $cmnt_tpl = get_markup_template('comment_item.tpl'); - $tpl = 'wall_item.tpl'; - $wallwall = 'wallwall_item.tpl'; - $hide_comments_tpl = get_markup_template('hide_comments.tpl'); - - $alike = array(); - $dlike = array(); - - - // array with html for each thread (parent+comments) - $threads = array(); - $threadsid = -1; - - if($items && count($items)) { - - if($mode === 'network-new' || $mode === 'search' || $mode === 'community') { - - // "New Item View" on network page or search page results - // - just loop through the items and format them minimally for display - - //$tpl = get_markup_template('search_item.tpl'); - $tpl = 'search_item.tpl'; - - foreach($items as $item) { - $threadsid++; - - $comment = ''; - $owner_url = ''; - $owner_photo = ''; - $owner_name = ''; - $sparkle = ''; - - if($mode === 'search' || $mode === 'community') { - if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) - && ($item['id'] != $item['parent'])) - continue; - $nickname = $item['nickname']; - } - else - $nickname = $a->user['nickname']; - - // prevent private email from leaking. - if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) - continue; - - $profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']); - if($item['author-link'] && (! $item['author-name'])) - $profile_name = $item['author-link']; - - - - $sp = false; - $profile_link = best_link_url($item,$sp); - if($profile_link === 'mailbox') - $profile_link = ''; - if($sp) - $sparkle = ' sparkle'; - else - $profile_link = zrl($profile_link); - - $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - if(($normalised != 'mailbox') && (x($a->contacts[$normalised]))) - $profile_avatar = $a->contacts[$normalised]['thumb']; - else - $profile_avatar = ((strlen($item['author-avatar'])) ? $a->get_cached_avatar_image($item['author-avatar']) : $item['thumb']); - - $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); - call_hooks('render_location',$locate); - - $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate)); - - localize_item($item); - if($mode === 'network-new') - $dropping = true; - else - $dropping = false; - - - $drop = array( - 'dropping' => $dropping, - 'select' => t('Select'), - 'delete' => t('Delete'), - ); - - $star = false; - $isstarred = "unstarred"; - - $lock = false; - $likebuttons = false; - $shareable = false; - - $body = prepare_body($item,true); - - //$tmp_item = replace_macros($tpl,array( - $tmp_item = array( - 'template' => $tpl, - 'id' => (($preview) ? 'P0' : $item['item_id']), - 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), - 'profile_url' => $profile_link, - 'item_photo_menu' => item_photo_menu($item), - 'name' => template_escape($profile_name), - 'sparkle' => $sparkle, - 'lock' => $lock, - 'thumb' => $profile_avatar, - 'title' => template_escape($item['title']), - 'body' => template_escape($body), - 'text' => strip_tags(template_escape($body)), - 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), - 'location' => template_escape($location), - 'indent' => '', - 'owner_name' => template_escape($owner_name), - 'owner_url' => $owner_url, - 'owner_photo' => $owner_photo, - 'plink' => get_plink($item), - 'edpost' => false, - 'isstarred' => $isstarred, - 'star' => $star, - 'drop' => $drop, - 'vote' => $likebuttons, - 'like' => '', - 'dislike' => '', - 'comment' => '', - 'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl($ssl_state) . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))), - 'previewing' => $previewing, - 'wait' => t('Please wait'), - ); - - $arr = array('item' => $item, 'output' => $tmp_item); - call_hooks('display_item', $arr); - - $threads[$threadsid]['id'] = $item['item_id']; - $threads[$threadsid]['items'] = array($arr['output']); - - } - - } - else - { - // Normal View - - - // Figure out how many comments each parent has - // (Comments all have gravity of 6) - // Store the result in the $comments array - - $comments = array(); - foreach($items as $item) { - if((intval($item['gravity']) == 6) && ($item['id'] != $item['parent'])) { - if(! x($comments,$item['parent'])) - $comments[$item['parent']] = 1; - else - $comments[$item['parent']] += 1; - } elseif(! x($comments,$item['parent'])) - $comments[$item['parent']] = 0; // avoid notices later on - } - - // map all the like/dislike activities for each parent item - // Store these in the $alike and $dlike arrays - - foreach($items as $item) { - like_puller($a,$item,$alike,'like'); - like_puller($a,$item,$dlike,'dislike'); - } - - $comments_collapsed = false; - $comments_seen = 0; - $comment_lastcollapsed = false; - $comment_firstcollapsed = false; - $blowhard = 0; - $blowhard_count = 0; - - - foreach($items as $item) { - - $comment = ''; - $template = $tpl; - $commentww = ''; - $sparkle = ''; - $owner_url = $owner_photo = $owner_name = ''; - - // We've already parsed out like/dislike for special treatment. We can ignore them now - - if(((activity_match($item['verb'],ACTIVITY_LIKE)) - || (activity_match($item['verb'],ACTIVITY_DISLIKE))) - && ($item['id'] != $item['parent'])) - continue; - - $toplevelpost = (($item['id'] == $item['parent']) ? true : false); - - - // Take care of author collapsing and comment collapsing - // (author collapsing is currently disabled) - // If a single author has more than 3 consecutive top-level posts, squash the remaining ones. - // If there are more than two comments, squash all but the last 2. - - if($toplevelpost) { - - $item_writeable = (($item['writable'] || $item['self']) ? true : false); - - $comments_seen = 0; - $comments_collapsed = false; - $comment_lastcollapsed = false; - $comment_firstcollapsed = false; - - $threadsid++; - $threads[$threadsid]['id'] = $item['item_id']; - $threads[$threadsid]['private'] = $item['private']; - $threads[$threadsid]['items'] = array(); - - } - else { - - // prevent private email reply to public conversation from leaking. - if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) - continue; - - $comments_seen ++; - $comment_lastcollapsed = false; - $comment_firstcollapsed = false; - } - - $override_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false); - $show_comment_box = ((($page_writeable) && ($item_writeable) && ($comments_seen == $comments[$item['parent']])) ? true : false); - - - if(($comments[$item['parent']] > 2) && ($comments_seen <= ($comments[$item['parent']] - 2)) && ($item['gravity'] == 6)) { - - if (!$comments_collapsed){ - $threads[$threadsid]['num_comments'] = sprintf( tt('%d comment','%d comments',$comments[$item['parent']]),$comments[$item['parent']] ); - $threads[$threadsid]['hide_text'] = t('show more'); - $comments_collapsed = true; - $comment_firstcollapsed = true; - } - } - if(($comments[$item['parent']] > 2) && ($comments_seen == ($comments[$item['parent']] - 1))) { - - $comment_lastcollapsed = true; - } - - $redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ; - - $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) - || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) - ? t('Private Message') - : false); - - - // Top-level wall post not written by the wall owner (wall-to-wall) - // First figure out who owns it. - - $osparkle = ''; - - if(($toplevelpost) && (! $item['self']) && ($mode !== 'profile')) { - - if($item['wall']) { - - // On the network page, I am the owner. On the display page it will be the profile owner. - // This will have been stored in $a->page_contact by our calling page. - // Put this person as the wall owner of the wall-to-wall notice. - - $owner_url = zrl($a->page_contact['url']); - $owner_photo = $a->page_contact['thumb']; - $owner_name = $a->page_contact['name']; - $template = $wallwall; - $commentww = 'ww'; - } - - if((! $item['wall']) && $item['owner-link']) { - - $owner_linkmatch = (($item['owner-link']) && link_compare($item['owner-link'],$item['author-link'])); - $alias_linkmatch = (($item['alias']) && link_compare($item['alias'],$item['author-link'])); - $owner_namematch = (($item['owner-name']) && $item['owner-name'] == $item['author-name']); - if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) { - - // The author url doesn't match the owner (typically the contact) - // and also doesn't match the contact alias. - // The name match is a hack to catch several weird cases where URLs are - // all over the park. It can be tricked, but this prevents you from - // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn - // well that it's the same Bob Smith. - - // But it could be somebody else with the same name. It just isn't highly likely. - - - $owner_url = $item['owner-link']; - $owner_photo = $item['owner-avatar']; - $owner_name = $item['owner-name']; - $template = $wallwall; - $commentww = 'ww'; - // If it is our contact, use a friendly redirect link - if((link_compare($item['owner-link'],$item['url'])) - && ($item['network'] === NETWORK_DFRN)) { - $owner_url = $redirect_url; - $osparkle = ' sparkle'; - } - else - $owner_url = zrl($owner_url); - } - } - } - - $likebuttons = ''; - $shareable = ((($profile_owner == local_user()) && ($item['private'] != 1)) ? true : false); - - if($page_writeable) { -/* if($toplevelpost) { */ - $likebuttons = array( - 'like' => array( t("I like this \x28toggle\x29"), t("like")), - 'dislike' => array( t("I don't like this \x28toggle\x29"), t("dislike")), - ); - if ($shareable) $likebuttons['share'] = array( t('Share this'), t('share')); -/* } */ - - $qc = $qcomment = null; - - if(in_array('qcomment',$a->plugins)) { - $qc = ((local_user()) ? get_pconfig(local_user(),'qcomment','words') : null); - $qcomment = (($qc) ? explode("\n",$qc) : null); - } - - if($show_comment_box) { - $comment = replace_macros($cmnt_tpl,array( - '$return_path' => '', - '$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''), - '$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'), - '$id' => $item['item_id'], - '$parent' => $item['parent'], - '$qcomment' => $qcomment, - '$profile_uid' => $profile_owner, - '$mylink' => $a->contact['url'], - '$mytitle' => t('This is you'), - '$myphoto' => $a->contact['thumb'], - '$comment' => t('Comment'), - '$submit' => t('Submit'), - '$edbold' => t('Bold'), - '$editalic' => t('Italic'), - '$eduline' => t('Underline'), - '$edquote' => t('Quote'), - '$edcode' => t('Code'), - '$edimg' => t('Image'), - '$edurl' => t('Link'), - '$edvideo' => t('Video'), - '$preview' => t('Preview'), - '$sourceapp' => t($a->sourcename), - '$ww' => (($mode === 'network') ? $commentww : '') - )); - } - } - - if(local_user() && link_compare($a->contact['url'],$item['author-link'])) - $edpost = array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit")); - else - $edpost = false; - - $drop = ''; - $dropping = false; - - if((intval($item['contact-id']) && $item['contact-id'] == remote_user()) || ($item['uid'] == local_user())) - $dropping = true; - - $drop = array( - 'dropping' => $dropping, - 'select' => t('Select'), - 'delete' => t('Delete'), - ); - - $star = false; - $filer = false; - - $isstarred = "unstarred"; - if ($profile_owner == local_user()) { - if($toplevelpost) { - $isstarred = (($item['starred']) ? "starred" : "unstarred"); - - $star = array( - 'do' => t("add star"), - 'undo' => t("remove star"), - 'toggle' => t("toggle star status"), - 'classdo' => (($item['starred']) ? "hidden" : ""), - 'classundo' => (($item['starred']) ? "" : "hidden"), - 'starred' => t('starred'), - 'tagger' => t("add tag"), - 'classtagger' => "", - ); - } - $filer = t("save to folder"); - } - - - $photo = $item['photo']; - $thumb = $item['thumb']; - - // Post was remotely authored. - - $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true); - - $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']); - - if($item['author-link'] && (! $item['author-name'])) - $profile_name = $item['author-link']; - - $sp = false; - $profile_link = best_link_url($item,$sp); - if($profile_link === 'mailbox') - $profile_link = ''; - if($sp) - $sparkle = ' sparkle'; - else - $profile_link = zrl($profile_link); - - $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) - $profile_avatar = $a->contacts[$normalised]['thumb']; - else - $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($thumb)); - - $like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : ''); - $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); - - $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); - call_hooks('render_location',$locate); - - $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate)); - - $indent = (($toplevelpost) ? '' : ' comment'); - - if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0) - $indent .= ' shiny'; - - // - localize_item($item); - - - $tags=array(); - foreach(explode(',',$item['tag']) as $tag){ - $tag = trim($tag); - if ($tag!="") $tags[] = bbcode($tag); - } - - // Build the HTML - - $body = prepare_body($item,true); - //$tmp_item = replace_macros($template, - $tmp_item = array( - // collapse comments in template. I don't like this much... - 'comment_firstcollapsed' => $comment_firstcollapsed, - 'comment_lastcollapsed' => $comment_lastcollapsed, - // template to use to render item (wall, walltowall, search) - 'template' => $template, - - 'type' => implode("",array_slice(explode("/",$item['verb']),-1)), - 'tags' => $tags, - 'body' => template_escape($body), - 'text' => strip_tags(template_escape($body)), - 'id' => $item['item_id'], - 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), - 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), - 'to' => t('to'), - 'wall' => t('Wall-to-Wall'), - 'vwall' => t('via Wall-To-Wall:'), - 'profile_url' => $profile_link, - 'item_photo_menu' => item_photo_menu($item), - 'name' => template_escape($profile_name), - 'thumb' => $profile_avatar, - 'osparkle' => $osparkle, - 'sparkle' => $sparkle, - 'title' => template_escape($item['title']), - 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), - 'lock' => $lock, - 'location' => template_escape($location), - 'indent' => $indent, - 'owner_url' => $owner_url, - 'owner_photo' => $owner_photo, - 'owner_name' => template_escape($owner_name), - 'plink' => get_plink($item), - 'edpost' => $edpost, - 'isstarred' => $isstarred, - 'star' => $star, - 'filer' => $filer, - 'drop' => $drop, - 'vote' => $likebuttons, - 'like' => $like, - 'dislike' => $dislike, - 'comment' => $comment, - 'previewing' => $previewing, - 'wait' => t('Please wait'), - - ); - - - $arr = array('item' => $item, 'output' => $tmp_item); - call_hooks('display_item', $arr); - - $threads[$threadsid]['items'][] = $arr['output']; - } - } - } - - - return $threads; - -} diff --git a/mod/friendika.php b/mod/friendika.php deleted file mode 100644 index 1f3df565d..000000000 --- a/mod/friendika.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -require_once('mod/friendica.php'); - -function friendika_init(&$a) { - friendica_init($a); -} - -function friendika_content(&$a) { - return friendica_content($a); -} diff --git a/mod/localtime.php b/mod/localtime.php deleted file mode 100644 index c03eae1b0..000000000 --- a/mod/localtime.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -require_once('include/datetime.php'); - - -function localtime_post(&$a) { - - $t = $_REQUEST['time']; - if(! $t) - $t = 'now'; - - $bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM - - if($_POST['timezone']) - $a->data['mod-localtime'] = datetime_convert('UTC',$_POST['timezone'],$t,$bd_format); - -} - -function localtime_content(&$a) { - $t = $_REQUEST['time']; - if(! $t) - $t = 'now'; - - $o .= '<h3>' . t('Time Conversion') . '</h3>'; - - $o .= '<p>' . t('Friendika provides this service for sharing events with other networks and friends in unknown timezones.') . '</p>'; - - - - $o .= '<p>' . sprintf( t('UTC time: %s'), $t) . '</p>'; - - if($_REQUEST['timezone']) - $o .= '<p>' . sprintf( t('Current timezone: %s'), $_REQUEST['timezone']) . '</p>'; - - if(x($a->data,'mod-localtime')) - $o .= '<p>' . sprintf( t('Converted localtime: %s'),$a->data['mod-localtime']) . '</p>'; - - - $o .= '<form action ="' . $a->get_baseurl() . '/localtime?f=&time=' . $t . '" method="post" >'; - - $o .= '<p>' . t('Please select your timezone:') . '</p>'; - - $o .= select_timezone(($_REQUEST['timezone']) ? $_REQUEST['timezone'] : 'America/Los_Angeles'); - - $o .= '<input type="submit" name="submit" value="' . t('Submit') . '" /></form>'; - - return $o; - -}
\ No newline at end of file diff --git a/mod/network.php b/mod/network.php index a85e11f90..b37be2fa8 100644 --- a/mod/network.php +++ b/mod/network.php @@ -661,14 +661,9 @@ function network_content(&$a, $update = 0, $load = false) { // Then fetch all the children of the parents that are on this page - $parents_arr = array(); - $parents_str = ''; - if(count($r)) { - foreach($r as $rr) - if(! in_array($rr['item_id'],$parents_arr)) - $parents_arr[] = $rr['item_id']; - $parents_str = implode(', ', $parents_arr); + + $parents_str = ids_to_querystr($r,'item_id'); $items = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`writable`, @@ -719,9 +714,8 @@ function network_content(&$a, $update = 0, $load = false) { $second = dba_timer(); - if(! $update) { + if(! $update) $o .= alt_pager($a,count($items)); - } // logger('parent dba_timer: ' . sprintf('%01.4f',$first - $start)); // logger('child dba_timer: ' . sprintf('%01.4f',$second - $first)); diff --git a/mod/notes.php b/mod/notes.php deleted file mode 100644 index afaa60f70..000000000 --- a/mod/notes.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php - -function notes_init(&$a) { - - if(! local_user()) - return; - - $profile = 0; - - $which = $a->user['nickname']; - -// profile_load($a,$which,$profile); - -} - - -function notes_content(&$a,$update = false) { - - if(! local_user()) { - notice( t('Permission denied.') . EOL); - return; - } - - require_once("include/bbcode.php"); - require_once('include/security.php'); - require_once('include/conversation.php'); - require_once('include/acl_selectors.php'); - $groups = array(); - - - $o = ''; - - $remote_contact = false; - - $contact_id = $_SESSION['cid']; - $contact = $a->contact; - - $is_owner = true; - - $o =""; - $o .= profile_tabs($a,True); - - if(! $update) { - $o .= '<h3>' . t('Personal Notes') . '</h3>'; - - $commpage = false; - $commvisitor = false; - - $celeb = false; - - - - $x = array( - 'is_owner' => $is_owner, - 'allow_location' => (($a->user['allow_location']) ? true : false), - 'default_location' => $a->user['default-location'], - 'nickname' => $a->user['nickname'], - 'lockstate' => 'lock', - 'acl' => '', - 'bang' => '', - 'visitor' => 'block', - 'profile_uid' => local_user(), - 'button' => t('Save') - - ); - - $o .= status_editor($a,$x,$a->contact['id']); - - $o .= '<div id="live-notes"></div>' . "\r\n"; - $o .= "<script> var profile_uid = " . local_user() - . "; var netargs = '/?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; - - } - - // Construct permissions - - // default permissions - anonymous user - - $sql_extra = " AND `allow_cid` = '<" . $a->contact['id'] . ">' "; - - $r = q("SELECT COUNT(*) AS `total` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 and `item`.`moderated` = 0 - AND `item`.`deleted` = 0 AND `item`.`type` = 'note' - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self` = 1 - AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 0 - $sql_extra ", - intval(local_user()) - - ); - - if(count($r)) { - $a->set_pager_total($r[0]['total']); - $a->set_pager_itemspage(40); - } - - $r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact-uid` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 - and `item`.`moderated` = 0 AND `item`.`type` = 'note' - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self` = 1 - AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 0 - $sql_extra - ORDER BY `item`.`created` DESC LIMIT %d ,%d ", - intval(local_user()), - intval($a->pager['start']), - intval($a->pager['itemspage']) - - ); - - $parents_arr = array(); - $parents_str = ''; - - if(count($r)) { - foreach($r as $rr) - $parents_arr[] = $rr['item_id']; - $parents_str = implode(', ', $parents_arr); - - $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, - `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`network`, `contact`.`rel`, - `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, - `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`deleted` = 0 - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - AND `item`.`parent` IN ( %s ) - $sql_extra - ORDER BY `parent` DESC, `gravity` ASC, `item`.`id` ASC ", - intval(local_user()), - dbesc($parents_str) - ); - - if(count($r)) { - $items = conv_sort($r,"`commented`"); - - $o .= conversation($a,$items,'notes',$update); - } - } - - - $o .= paginate($a); - return $o; -} diff --git a/mod/openid.php b/mod/openid.php deleted file mode 100644 index e2cea7d85..000000000 --- a/mod/openid.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - - -require_once('library/openid.php'); - - -function openid_content(&$a) { - - $noid = get_config('system','no_openid'); - if($noid) - goaway(z_root()); - - logger('mod_openid ' . print_r($_REQUEST,true), LOGGER_DATA); - - if((x($_GET,'openid_mode')) && (x($_SESSION,'openid'))) { - - $openid = new LightOpenID; - - if($openid->validate()) { - - $authid = normalise_openid($_REQUEST['openid_identity']); - - if(! strlen($authid)) { - logger( t('OpenID protocol error. No ID returned.') . EOL); - goaway(z_root()); - } - - $r = q("SELECT `user`.*, `user`.`pubkey` as `upubkey`, `user`.`prvkey` as `uprvkey` - FROM `user` WHERE `openid` = '%s' AND `blocked` = 0 - AND `account_expired` = 0 AND `verified` = 1 LIMIT 1", - dbesc($authid) - ); - - if($r && count($r)) { - - // successful OpenID login - - unset($_SESSION['openid']); - - require_once('include/security.php'); - authenticate_success($r[0],true,true); - - // just in case there was no return url set - // and we fell through - - goaway(z_root()); - } - - // Successful OpenID login - but we can't match it to an existing account. - // New registration? - - if($a->config['register_policy'] == REGISTER_CLOSED) { - notice( t('Account not found and OpenID registration is not permitted on this site.') . EOL); - goaway(z_root()); - } - - unset($_SESSION['register']); - $args = ''; - $attr = $openid->getAttributes(); - if(is_array($attr) && count($attr)) { - foreach($attr as $k => $v) { - if($k === 'namePerson/friendly') - $nick = notags(trim($v)); - if($k === 'namePerson/first') - $first = notags(trim($v)); - if($k === 'namePerson') - $args .= '&username=' . notags(trim($v)); - if($k === 'contact/email') - $args .= '&email=' . notags(trim($v)); - if($k === 'media/image/aspect11') - $photosq = bin2hex(trim($v)); - if($k === 'media/image/default') - $photo = bin2hex(trim($v)); - } - } - if($nick) - $args .= '&nickname=' . $nick; - elseif($first) - $args .= '&nickname=' . $first; - - if($photosq) - $args .= '&photo=' . $photosq; - elseif($photo) - $args .= '&photo=' . $photo; - - $args .= '&openid_url=' . notags(trim($authid)); - - goaway($a->get_baseurl() . '/register' . $args); - - // NOTREACHED - } - } - notice( t('Login failed.') . EOL); - goaway(z_root()); - // NOTREACHED -} diff --git a/mod/ping.php b/mod/ping.php index cf4b65c90..da612a255 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -47,7 +47,7 @@ function ping_init(&$a) { killme(); } - if($argc() > 1 && $argv(1) === 'notify') { + if(argc() > 1 && argv(1) === 'notify') { $t = q("select count(*) as total from notify where uid = %d and seen = 0", intval(local_user()) ); diff --git a/mod/profile.php b/mod/profile.php index af8f684b3..a562b37cc 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -20,42 +20,14 @@ function profile_init(&$a) { $profile = 0; - if((local_user()) && ($a->argc > 2) && ($a->argv[2] === 'view')) { - $which = $a->user['nickname']; - $profile = $a->argv[1]; + if((local_user()) && (argc() > 2) && (argv(2) === 'view')) { + $which = $a->identity['entity_address']; + $profile = argv(1); } profile_load($a,$which,$profile); - $userblock = (($a->profile['hidewall'] && (! local_user()) && (! remote_user())) ? true : false); - - if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) { - $a->page['htmlhead'] .= '<meta name="friendica.community" content="true" />'; - } - if(x($a->profile,'openidserver')) - $a->page['htmlhead'] .= '<link rel="openid.server" href="' . $a->profile['openidserver'] . '" />' . "\r\n"; - if(x($a->profile,'openid')) { - $delegate = ((strstr($a->profile['openid'],'://')) ? $a->profile['openid'] : 'http://' . $a->profile['openid']); - $a->page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\r\n"; - } - // site block - if((! $blocked) && (! $userblock)) { - $keywords = ((x($a->profile,'pub_keywords')) ? $a->profile['pub_keywords'] : ''); - $keywords = str_replace(array('#',',',' ',',,'),array('',' ',',',','),$keywords); - if(strlen($keywords)) - $a->page['htmlhead'] .= '<meta name="keywords" content="' . $keywords . '" />' . "\r\n" ; - } - - $a->page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . (($a->profile['net-publish']) ? 'true' : 'false') . '" />' . "\r\n" ; - $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/dfrn_poll/' . $which .'" />' . "\r\n" ; - $uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $a->get_hostname() . (($a->path) ? '/' . $a->path : '')); - $a->page['htmlhead'] .= '<link rel="lrdd" type="application/xrd+xml" href="' . $a->get_baseurl() . '/xrd/?uri=' . $uri . '" />' . "\r\n"; - header('Link: <' . $a->get_baseurl() . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false); - - $dfrn_pages = array('request', 'confirm', 'notify', 'poll'); - foreach($dfrn_pages as $dfrn) - $a->page['htmlhead'] .= "<link rel=\"dfrn-{$dfrn}\" href=\"".$a->get_baseurl()."/dfrn_{$dfrn}/{$which}\" />\r\n"; - $a->page['htmlhead'] .= "<link rel=\"dfrn-poco\" href=\"".$a->get_baseurl()."/poco/{$which}\" />\r\n"; + $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which .'" />' . "\r\n" ; } @@ -64,16 +36,16 @@ function profile_content(&$a, $update = 0) { $category = $datequery = $datequery2 = ''; - if($a->argc > 2) { - for($x = 2; $x < $a->argc; $x ++) { - if(is_a_date_arg($a->argv[$x])) { + if(argc() > 2) { + for($x = 2; $x < argc(); $x ++) { + if(is_a_date_arg(argv($x))) { if($datequery) - $datequery2 = escape_tags($a->argv[$x]); + $datequery2 = escape_tags(argv($x)); else - $datequery = escape_tags($a->argv[$x]); + $datequery = escape_tags(argv($x)); } else - $category = $a->argv[$x]; + $category = argv($x); } } @@ -81,7 +53,7 @@ function profile_content(&$a, $update = 0) { $category = ((x($_GET,'category')) ? $_GET['category'] : ''); } - if(get_config('system','block_public') && (! local_user()) && (! remote_user())) { + if(get_config('system','block_public') && (! get_account_id()) && (! remote_user())) { return login(); } @@ -157,9 +129,6 @@ function profile_content(&$a, $update = 0) { $o .= common_friends_visitor_widget($a->profile['profile_uid']); - if(x($_SESSION,'new_member') && $_SESSION['new_member'] && $is_owner) - $o .= '<a href="newmember" id="newmember-tips" style="font-size: 1.2em;"><b>' . t('Tips for New Members') . '</b></a>' . EOL; - $commpage = (($a->profile['page-flags'] == PAGE_COMMUNITY) ? true : false); $commvisitor = (($commpage && $remote_contact == true) ? true : false); @@ -223,20 +192,7 @@ function profile_content(&$a, $update = 0) { $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2)))); } - if(! get_pconfig($a->profile['profile_uid'],'system','alt_pager')) { - $r = q("SELECT COUNT(*) AS `total` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 - and `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1 - $sql_extra $sql_extra2 ", - intval($a->profile['profile_uid']) - ); - - if(count($r)) { - $a->set_pager_total($r[0]['total']); - } - } + $a->set_pager_itemspage(40); $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage'])); @@ -254,13 +210,9 @@ function profile_content(&$a, $update = 0) { } - $parents_arr = array(); - $parents_str = ''; - if(count($r)) { - foreach($r as $rr) - $parents_arr[] = $rr['item_id']; - $parents_str = implode(', ', $parents_arr); + + $parents_str = ids_to_querystr($r,'item_id'); $items = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`network`, `contact`.`rel`, @@ -305,14 +257,8 @@ function profile_content(&$a, $update = 0) { $o .= conversation($a,$items,'profile',$update); - if(! $update) { - if(! get_pconfig($a->profile['profile_uid'],'system','alt_pager')) { - $o .= paginate($a); - } - else { - $o .= alt_pager($a,count($items)); - } - } + if(! $update) + $o .= alt_pager($a,count($items)); return $o; } diff --git a/mod/pubsub.php b/mod/pubsub.php deleted file mode 100644 index 33d26d553..000000000 --- a/mod/pubsub.php +++ /dev/null @@ -1,153 +0,0 @@ -<?php - -function hub_return($valid,$body) { - - if($valid) { - header($_SERVER["SERVER_PROTOCOL"] . ' 200 ' . 'OK'); - echo $body; - killme(); - } - else { - header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . 'Not Found'); - killme(); - } - - // NOTREACHED -} - -// when receiving an XML feed, always return OK - -function hub_post_return() { - - header($_SERVER["SERVER_PROTOCOL"] . ' 200 ' . 'OK'); - killme(); - -} - - - -function pubsub_init(&$a) { - - $nick = (($a->argc > 1) ? notags(trim($a->argv[1])) : ''); - $contact_id = (($a->argc > 2) ? intval($a->argv[2]) : 0 ); - - if($_SERVER['REQUEST_METHOD'] === 'GET') { - - $hub_mode = ((x($_GET,'hub_mode')) ? notags(trim($_GET['hub_mode'])) : ''); - $hub_topic = ((x($_GET,'hub_topic')) ? notags(trim($_GET['hub_topic'])) : ''); - $hub_challenge = ((x($_GET,'hub_challenge')) ? notags(trim($_GET['hub_challenge'])) : ''); - $hub_lease = ((x($_GET,'hub_lease_seconds')) ? notags(trim($_GET['hub_lease_seconds'])) : ''); - $hub_verify = ((x($_GET,'hub_verify_token')) ? notags(trim($_GET['hub_verify_token'])) : ''); - - logger('pubsub: Subscription from ' . $_SERVER['REMOTE_ADDR']); - logger('pubsub: data: ' . print_r($_GET,true), LOGGER_DATA); - - $subscribe = (($hub_mode === 'subscribe') ? 1 : 0); - - $r = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `account_expired` = 0 LIMIT 1", - dbesc($nick) - ); - if(! count($r)) { - logger('pubsub: local account not found: ' . $nick); - hub_return(false, ''); - } - - - $owner = $r[0]; - - $sql_extra = ((strlen($hub_verify)) ? sprintf(" AND `hub-verify` = '%s' ", dbesc($hub_verify)) : ''); - - $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d - AND `blocked` = 0 AND `pending` = 0 $sql_extra LIMIT 1", - intval($contact_id), - intval($owner['uid']) - ); - if(! count($r)) { - logger('pubsub: contact not found.'); - hub_return(false, ''); - } - - if(! link_compare($hub_topic,$r[0]['poll'])) { - logger('pubsub: hub topic ' . $hub_topic . ' != ' . $r[0]['poll']); - // should abort but let's humour them. - } - - $contact = $r[0]; - - // We must initiate an unsubscribe request with a verify_token. - // Don't allow outsiders to unsubscribe us. - - if($hub_mode === 'unsubscribe') { - if(! strlen($hub_verify)) { - logger('pubsub: bogus unsubscribe'); - hub_return(false, ''); - } - logger('pubsub: unsubscribe success'); - } - - $r = q("UPDATE `contact` SET `subhub` = %d WHERE `id` = %d LIMIT 1", - intval($subscribe), - intval($contact['id']) - ); - - hub_return(true, $hub_challenge); - } -} - -require_once('include/security.php'); - -function pubsub_post(&$a) { - - $xml = file_get_contents('php://input'); - - logger('pubsub: feed arrived from ' . $_SERVER['REMOTE_ADDR'] . ' for ' . $a->cmd ); - logger('pubsub: user-agent: ' . $_SERVER['HTTP_USER_AGENT'] ); - logger('pubsub: data: ' . $xml, LOGGER_DATA); - -// if(! stristr($xml,'<?xml')) { -// logger('pubsub_post: bad xml'); -// hub_post_return(); -// } - - $nick = (($a->argc > 1) ? notags(trim($a->argv[1])) : ''); - $contact_id = (($a->argc > 2) ? intval($a->argv[2]) : 0 ); - - $r = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `account_expired` = 0 LIMIT 1", - dbesc($nick) - ); - if(! count($r)) - hub_post_return(); - - $importer = $r[0]; - - $r = q("SELECT * FROM `contact` WHERE `subhub` = 1 AND `id` = %d AND `uid` = %d - AND ( `rel` = %d OR `rel` = %d ) AND `blocked` = 0 AND `readonly` = 0 LIMIT 1", - intval($contact_id), - intval($importer['uid']), - intval(CONTACT_IS_SHARING), - intval(CONTACT_IS_FRIEND) - ); - - if(! count($r)) { - logger('pubsub: no contact record - ignored'); - hub_post_return(); - } - - $contact = $r[0]; - - $feedhub = ''; - - require_once('include/items.php'); - - consume_feed($xml,$importer,$contact,$feedhub,1,1); - - // do it a second time so that any children find their parents. - - consume_feed($xml,$importer,$contact,$feedhub,1,2); - - hub_post_return(); - -} - - - diff --git a/mod/rsd_xml.php b/mod/rsd_xml.php index 5bf4663fd..f4984f0f0 100644 --- a/mod/rsd_xml.php +++ b/mod/rsd_xml.php @@ -7,8 +7,8 @@ function rsd_xml_content(&$a) { echo '<?xml version="1.0" encoding="UTF-8"?> <rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd"> <service> - <engineName>Friendika</engineName> - <engineLink>http://friendika.com/</engineLink> + <engineName>Friendica</engineName> + <engineLink>http://friendica.com/</engineLink> <apis> <api name="Twitter" preferred="true" apiLink="'.$a->get_baseurl().'/api/" blogID=""> <settings> diff --git a/mod/salmon.php b/mod/salmon.php deleted file mode 100644 index 1e16f9d14..000000000 --- a/mod/salmon.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php - - -// There is a lot of debug stuff in here because this is quite a -// complicated process to try and sort out. - -require_once('include/salmon.php'); -require_once('include/crypto.php'); -require_once('library/simplepie/simplepie.inc'); - -function salmon_return($val) { - - if($val >= 400) - $err = 'Error'; - if($val >= 200 && $val < 300) - $err = 'OK'; - - logger('mod-salmon returns ' . $val); - header($_SERVER["SERVER_PROTOCOL"] . ' ' . $val . ' ' . $err); - killme(); - -} - -function salmon_post(&$a) { - - $xml = file_get_contents('php://input'); - - logger('mod-salmon: new salmon ' . $xml, LOGGER_DATA); - - $nick = (($a->argc > 1) ? notags(trim($a->argv[1])) : ''); - $mentions = (($a->argc > 2 && $a->argv[2] === 'mention') ? true : false); - - $r = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `account_expired` = 0 LIMIT 1", - dbesc($nick) - ); - if(! count($r)) - http_status_exit(500); - - $importer = $r[0]; - - // parse the xml - - $dom = simplexml_load_string($xml,'SimpleXMLElement',0,NAMESPACE_SALMON_ME); - - // figure out where in the DOM tree our data is hiding - - if($dom->provenance->data) - $base = $dom->provenance; - elseif($dom->env->data) - $base = $dom->env; - elseif($dom->data) - $base = $dom; - - if(! $base) { - logger('mod-salmon: unable to locate salmon data in xml '); - http_status_exit(400); - } - - // Stash the signature away for now. We have to find their key or it won't be good for anything. - - - $signature = base64url_decode($base->sig); - - // unpack the data - - // strip whitespace so our data element will return to one big base64 blob - $data = str_replace(array(" ","\t","\r","\n"),array("","","",""),$base->data); - - // stash away some other stuff for later - - $type = $base->data[0]->attributes()->type[0]; - $keyhash = $base->sig[0]->attributes()->keyhash[0]; - $encoding = $base->encoding; - $alg = $base->alg; - - // Salmon magic signatures have evolved and there is no way of knowing ahead of time which - // flavour we have. We'll try and verify it regardless. - - $stnet_signed_data = $data; - - $signed_data = $data . '.' . base64url_encode($type) . '.' . base64url_encode($encoding) . '.' . base64url_encode($alg); - - $compliant_format = str_replace('=','',$signed_data); - - - // decode the data - $data = base64url_decode($data); - - // Remove the xml declaration - $data = preg_replace('/\<\?xml[^\?].*\?\>/','',$data); - - // Create a fake feed wrapper so simplepie doesn't choke - - $tpl = get_markup_template('fake_feed.tpl'); - - $base = substr($data,strpos($data,'<entry')); - - $feedxml = $tpl . $base . '</feed>'; - - logger('mod-salmon: Processed feed: ' . $feedxml); - - // Now parse it like a normal atom feed to scrape out the author URI - - $feed = new SimplePie(); - $feed->set_raw_data($feedxml); - $feed->enable_order_by_date(false); - $feed->init(); - - logger('mod-salmon: Feed parsed.'); - - if($feed->get_item_quantity()) { - foreach($feed->get_items() as $item) { - $author = $item->get_author(); - $author_link = unxmlify($author->get_link()); - break; - } - } - - if(! $author_link) { - logger('mod-salmon: Could not retrieve author URI.'); - http_status_exit(400); - } - - // Once we have the author URI, go to the web and try to find their public key - - logger('mod-salmon: Fetching key for ' . $author_link ); - - - $key = get_salmon_key($author_link,$keyhash); - - if(! $key) { - logger('mod-salmon: Could not retrieve author key.'); - http_status_exit(400); - } - - $key_info = explode('.',$key); - - $m = base64url_decode($key_info[1]); - $e = base64url_decode($key_info[2]); - - logger('mod-salmon: key details: ' . print_r($key_info,true), LOGGER_DEBUG); - - $pubkey = metopem($m,$e); - - // We should have everything we need now. Let's see if it verifies. - - $verify = rsa_verify($compliant_format,$signature,$pubkey); - - if(! $verify) { - logger('mod-salmon: message did not verify using protocol. Trying padding hack.'); - $verify = rsa_verify($signed_data,$signature,$pubkey); - } - - if(! $verify) { - logger('mod-salmon: message did not verify using padding. Trying old statusnet hack.'); - $verify = rsa_verify($stnet_signed_data,$signature,$pubkey); - } - - if(! $verify) { - logger('mod-salmon: Message did not verify. Discarding.'); - http_status_exit(400); - } - - logger('mod-salmon: Message verified.'); - - - /* - * - * If we reached this point, the message is good. Now let's figure out if the author is allowed to send us stuff. - * - */ - - $r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND ( `url` = '%s' OR `alias` = '%s' ) - AND `uid` = %d LIMIT 1", - dbesc(NETWORK_OSTATUS), - dbesc($author_link), - dbesc($author_link), - intval($importer['uid']) - ); - if(! count($r)) { - logger('mod-salmon: Author unknown to us.'); - if(get_pconfig($importer['uid'],'system','ostatus_autofriend')) { - require_once('include/follow.php'); - $result = new_contact($importer['uid'],$author_link); - if($result['success']) { - $r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND ( `url` = '%s' OR `alias` = '%s' ) - AND `uid` = %d LIMIT 1", - dbesc(NETWORK_OSTATUS), - dbesc($author_link), - dbesc($author_link), - intval($importer['uid']) - ); - } - } - } - - // is this a follower? Or have we ignored the person? - // If so we can not accept this post. - - if((count($r)) && (($r[0]['readonly']) || ($r[0]['rel'] == CONTACT_IS_FOLLOWER) || ($r[0]['blocked']))) { - logger('mod-salmon: Ignoring this author.'); - http_status_exit(202); - // NOTREACHED - } - - require_once('include/items.php'); - - // Placeholder for hub discovery. We shouldn't find any hubs - // since we supplied the fake feed header - and it doesn't have any. - - $hub = ''; - - /** - * - * anti-spam measure: consume_feed will accept a follow activity from - * this person (and nothing else) if there is no existing contact record. - * - */ - - $contact_rec = ((count($r)) ? $r[0] : null); - - consume_feed($feedxml,$importer,$contact_rec,$hub); - - http_status_exit(200); -} - - - - diff --git a/mod/session.php b/mod/session.php deleted file mode 100644 index 22c855edb..000000000 --- a/mod/session.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -function session_content(&$a) { - -} diff --git a/version.inc b/version.inc index 35af6d29c..358d9fdb9 100644 --- a/version.inc +++ b/version.inc @@ -1 +1 @@ -2012-08-27.59 +2012-08-29.61 diff --git a/view/theme/duepuntozero/css/style.css b/view/theme/duepuntozero/css/style.css index bbb4cb54f..34360aacf 100644 --- a/view/theme/duepuntozero/css/style.css +++ b/view/theme/duepuntozero/css/style.css @@ -60,18 +60,8 @@ input { img { border :0px; } -#id_openid_url, .openid input { - background: url(../img/login-bg.gif) no-repeat; - background-position: 0 50%; - padding-left: 18px; -} -.openid:hover { -} -#id_openid_url { - width: 384px; -} code { font-family: Courier, monospace; @@ -409,16 +399,32 @@ div.wall-item-content-wrapper.shiny { margin-top: 10px; } +#main-login { + margin-left: 100px; + margin-top: 50px; +} -#login_standard { - width: 210px; +#main-login #id_username, #main-login #id_password { + width: 200px; + padding: 10px; + float: left; +} + +#main-login .field_end { + clear: both; +} + +#main-login .field.input label, #main-login .field.password label { float: left; + width: 100px; } -#login_openid { - width: 210px; - margin-left: 250px; + +#login_standard { + width: 350px; + float: left; } + #login_standard input, #login_openid input { width: 180px; @@ -430,17 +436,19 @@ div.wall-item-content-wrapper.shiny { #register-link, #lost-password-link { float: left; - font-size: 80%; - margin-right: 15px; + font-size: 90%; + margin-left: 100px; } -#login-name-end, #login-password-end, #login-extra-end, #login-submit-end { - height: 50px; +#login-standard-end { + clear: both; } #login-submit-button { -/* margin-top: 10px; */ - margin-left: 200px; + + margin-left: 100px; + margin-top: 10px; +/* margin-left: 200px; */ } diff --git a/view/tpl/field_input.tpl b/view/tpl/field_input.tpl index 748d93f3e..09417deca 100644 --- a/view/tpl/field_input.tpl +++ b/view/tpl/field_input.tpl @@ -1,6 +1,7 @@ <div class='field input'> - <label for='id_$field.0'>$field.1</label> + <label for='id_$field.0' id='label_$field.0'>$field.1</label> <input name='$field.0' id='id_$field.0' value="$field.2"> - <span class='field_help'>$field.3</span> + <span id='help_$field.0' class='field_help'>$field.3</span> + <div id='end_$field.0' class='field_end'></div> </div> diff --git a/view/tpl/login.tpl b/view/tpl/login.tpl index 94dd85eeb..9cecef5c7 100644 --- a/view/tpl/login.tpl +++ b/view/tpl/login.tpl @@ -1,5 +1,5 @@ -<form action="$dest_url" method="post" > +<form action="$dest_url" id="$form_id" method="post" > <input type="hidden" name="auth-params" value="login" /> <div id="login_standard"> @@ -8,10 +8,12 @@ </div> <div id="login-extra-links"> - {{ if $register }}<a href="zregister" title="$register.title" id="register-link">$register.desc</a>{{ endif }} + {{ if $register }}<a href="$register.link" title="$register.title" id="register-link">$register.desc</a>{{ endif }} <a href="lostpass" title="$lostpass" id="lost-password-link" >$lostlink</a> </div> + <div id="login-standard-end"></div> + <div id="login-submit-wrapper" > <input type="submit" name="submit" id="login-submit-button" value="$login" /> </div> |