merged multipart email changes
This commit is contained in:
11
mod/api.php
Normal file
11
mod/api.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
require_once('include/api.php');
|
||||
|
||||
function api_content(&$a) {
|
||||
echo api_call($a);
|
||||
killme();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -5,10 +5,11 @@ function apps_content(&$a) {
|
||||
|
||||
$o .= '<h3>' . t('Applications') . '</h3>';
|
||||
|
||||
$o .= '<div class="app-title"><a href="notes">' . t('Private Notes') . '</a></div>';
|
||||
|
||||
if($a->apps)
|
||||
$o .= $a->apps;
|
||||
|
||||
|
||||
return $o;
|
||||
|
||||
}
|
||||
@@ -9,15 +9,20 @@ function contacts_init(&$a) {
|
||||
$a->page['aside'] .= group_side();
|
||||
|
||||
if($a->config['register_policy'] != REGISTER_CLOSED)
|
||||
$a->page['aside'] .= '<div class="side-invite-link-wrapper" id="side-invite-link-wrapper" ><a href="invite" class="side-invite-link" id="side-invite-link">' . t("Invite Friends") . '</a></div>';
|
||||
$a->page['aside'] .= '<div class="side-link" id="side-invite-link" ><a href="invite" >' . t("Invite Friends") . '</a></div>';
|
||||
|
||||
$tpl = load_view_file('view/follow.tpl');
|
||||
if(strlen(get_config('system','directory_submit_url')))
|
||||
$a->page['aside'] .= '<div class="side-link" id="side-match-link"><a href="match" >' . t('Find People With Shared Interests') . '</a></div>';
|
||||
|
||||
$tpl = get_markup_template('follow.tpl');
|
||||
$a->page['aside'] .= replace_macros($tpl,array(
|
||||
'$label' => t('Connect/Follow'),
|
||||
'$hint' => t('Example: bob@example.com, http://example.com/barbara'),
|
||||
'$follow' => t('Follow')
|
||||
));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
function contacts_post(&$a) {
|
||||
@@ -137,7 +142,8 @@ function contacts_content(&$a) {
|
||||
intval(local_user())
|
||||
);
|
||||
if($r) {
|
||||
notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL );
|
||||
//notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL );
|
||||
notice( (($blocked) ? t('Contact has been blocked') : t('Contact has been unblocked')) . EOL );
|
||||
}
|
||||
goaway($a->get_baseurl() . '/contacts/' . $contact_id);
|
||||
return; // NOTREACHED
|
||||
@@ -151,7 +157,7 @@ function contacts_content(&$a) {
|
||||
intval(local_user())
|
||||
);
|
||||
if($r) {
|
||||
notice( t('Contact has been ') . (($readonly) ? t('ignored') : t('unignored')) . EOL );
|
||||
notice( (($readonly) ? t('Contact has been ignored') : t('Contact has been unignored')) . EOL );
|
||||
}
|
||||
goaway($a->get_baseurl() . '/contacts/' . $contact_id);
|
||||
return; // NOTREACHED
|
||||
@@ -162,7 +168,7 @@ function contacts_content(&$a) {
|
||||
// create an unfollow slap
|
||||
|
||||
if($orig_record[0]['network'] === 'stat') {
|
||||
$tpl = load_view_file('view/follow_slap.tpl');
|
||||
$tpl = get_markup_template('follow_slap.tpl');
|
||||
$slap = replace_macros($tpl, array(
|
||||
'$name' => $a->user['username'],
|
||||
'$profile_page' => $a->get_baseurl() . '/profile/' . $a->user['nickname'],
|
||||
@@ -174,8 +180,8 @@ function contacts_content(&$a) {
|
||||
'$type' => 'text',
|
||||
'$content' => t('stopped following'),
|
||||
'$nick' => $a->user['nickname'],
|
||||
'$verb' => ACTIVITY_UNFOLLOW,
|
||||
'$ostat_follow' => '<as:verb>http://ostatus.org/schema/1.0/unfollow</as:verb>' . "\r\n"
|
||||
'$verb' => 'http://ostatus.org/schema/1.0/unfollow', // ACTIVITY_UNFOLLOW,
|
||||
'$ostat_follow' => '' // '<as:verb>http://ostatus.org/schema/1.0/unfollow</as:verb>' . "\r\n"
|
||||
));
|
||||
|
||||
if((x($orig_record[0],'notify')) && (strlen($orig_record[0]['notify']))) {
|
||||
@@ -209,12 +215,12 @@ function contacts_content(&$a) {
|
||||
return;
|
||||
}
|
||||
|
||||
$tpl = load_view_file('view/contact_head.tpl');
|
||||
$tpl = get_markup_template('contact_head.tpl');
|
||||
$a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl()));
|
||||
|
||||
require_once('include/contact_selectors.php');
|
||||
|
||||
$tpl = load_view_file("view/contact_edit.tpl");
|
||||
$tpl = get_markup_template("contact_edit.tpl");
|
||||
|
||||
switch($r[0]['rel']) {
|
||||
case REL_BUD:
|
||||
@@ -243,6 +249,9 @@ function contacts_content(&$a) {
|
||||
$sparkle = '';
|
||||
}
|
||||
|
||||
$insecure = '<div id="profile-edit-insecure"><p><img src="images/unlock_icon.gif" alt="' . t('Privacy Unavailable') . '" /> '
|
||||
. t('Private communications are not available for this contact.') . '</p></div>';
|
||||
|
||||
$last_update = (($r[0]['last-update'] == '0000-00-00 00:00:00')
|
||||
? t('Never')
|
||||
: datetime_convert('UTC',date_default_timezone_get(),$r[0]['last-update'],'D, j M Y, g:i A'));
|
||||
@@ -252,9 +261,20 @@ function contacts_content(&$a) {
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$header' => t('Contact Editor'),
|
||||
'$submit' => t('Submit'),
|
||||
'$lbl_vis1' => t('Profile Visibility'),
|
||||
'$lbl_vis2' => sprintf( t('Please choose the profile you would like to display to %s when viewing your profile securely.'), $r[0]['name']),
|
||||
'$lbl_info1' => t('Contact Information / Notes'),
|
||||
'$lbl_rep1' => t('Online Reputation'),
|
||||
'$lbl_rep2' => t('Occasionally your friends may wish to inquire about this person\'s online legitimacy.'),
|
||||
'$lbl_rep3' => t('You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them.'),
|
||||
'$lbl_rep4' => t('Please take a moment to elaborate on this selection if you feel it could be helpful to others.'),
|
||||
'$visit' => t('Visit $name\'s profile'),
|
||||
'$blockunblock' => t('Block/Unblock contact'),
|
||||
'$ignorecont' => t('Ignore contact'),
|
||||
'$altcrepair' => t('Repair contact URL settings'),
|
||||
'$lblcrepair' => t("Repair contact URL settings \x28WARNING: Advanced\x29"),
|
||||
'$lblrecent' => t('View conversations'),
|
||||
'$delete' => t('Delete contact'),
|
||||
'$poll_interval' => contact_poll_interval($r[0]['priority']),
|
||||
'$lastupdtext' => t('Last updated: '),
|
||||
@@ -265,7 +285,7 @@ function contacts_content(&$a) {
|
||||
'$contact_id' => $r[0]['id'],
|
||||
'$block_text' => (($r[0]['blocked']) ? t('Unblock this contact') : t('Block this contact') ),
|
||||
'$ignore_text' => (($r[0]['readonly']) ? t('Unignore this contact') : t('Ignore this contact') ),
|
||||
'$insecure' => (($r[0]['network'] === 'stat') ? load_view_file('view/insecure_net.tpl') : ''),
|
||||
'$insecure' => (($r[0]['network'] !== NETWORK_DFRN && $r[0]['network'] !== NETWORK_MAIL && $r[0]['network'] !== NETWORK_FACEBOOK) ? $insecure : ''),
|
||||
'$info' => $r[0]['info'],
|
||||
'$blocked' => (($r[0]['blocked']) ? '<div id="block-message">' . t('Currently blocked') . '</div>' : ''),
|
||||
'$ignored' => (($r[0]['readonly']) ? '<div id="ignore-message">' . t('Currently ignored') . '</div>' : ''),
|
||||
@@ -297,7 +317,7 @@ function contacts_content(&$a) {
|
||||
|
||||
$search = ((x($_GET,'search')) ? notags(trim($_GET['search'])) : '');
|
||||
|
||||
$tpl = load_view_file("view/contacts-top.tpl");
|
||||
$tpl = get_markup_template("contacts-top.tpl");
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$header' => t('Contacts'),
|
||||
'$hide_url' => ((strlen($sql_extra)) ? 'contacts/all' : 'contacts' ),
|
||||
@@ -331,7 +351,7 @@ function contacts_content(&$a) {
|
||||
|
||||
if(count($r)) {
|
||||
|
||||
$tpl = load_view_file("view/contact_template.tpl");
|
||||
$tpl = get_markup_template("contact_template.tpl");
|
||||
|
||||
foreach($r as $rr) {
|
||||
if($rr['self'])
|
||||
@@ -364,13 +384,14 @@ function contacts_content(&$a) {
|
||||
|
||||
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$img_hover' => t('Visit ') . $rr['name'] . t('\'s profile'),
|
||||
'$img_hover' => t('Visit $username\'s profile'),
|
||||
'$edit_hover' => t('Edit contact'),
|
||||
'$id' => $rr['id'],
|
||||
'$alt_text' => $alt_text,
|
||||
'$dir_icon' => $dir_icon,
|
||||
'$thumb' => $rr['thumb'],
|
||||
'$name' => substr($rr['name'],0,20),
|
||||
'$username' => $rr['name'],
|
||||
'$sparkle' => $sparkle,
|
||||
'$url' => $url
|
||||
));
|
||||
|
||||
105
mod/crepair.php
Normal file
105
mod/crepair.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
function crepair_post(&$a) {
|
||||
if(! local_user())
|
||||
return;
|
||||
|
||||
$cid = (($a->argc > 1) ? intval($a->argv[1]) : 0);
|
||||
|
||||
if($cid) {
|
||||
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($cid),
|
||||
intval(local_user())
|
||||
);
|
||||
}
|
||||
|
||||
if(! count($r))
|
||||
return;
|
||||
|
||||
$contact = $r[0];
|
||||
|
||||
$nick = ((x($_POST,'nick')) ? $_POST['nick'] : null);
|
||||
$url = ((x($_POST,'url')) ? $_POST['url'] : null);
|
||||
$request = ((x($_POST,'request')) ? $_POST['request'] : null);
|
||||
$confirm = ((x($_POST,'confirm')) ? $_POST['confirm'] : null);
|
||||
$notify = ((x($_POST,'notify')) ? $_POST['notify'] : null);
|
||||
$poll = ((x($_POST,'poll')) ? $_POST['poll'] : null);
|
||||
|
||||
|
||||
$r = q("UPDATE `contact` SET `nick` = '%s', `url` = '%s', `request` = '%s', `confirm` = '%s', `notify` = '%s', `poll` = '%s'
|
||||
WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
dbesc($nick),
|
||||
dbesc($url),
|
||||
dbesc($request),
|
||||
dbesc($confirm),
|
||||
dbesc($notify),
|
||||
dbesc($poll),
|
||||
intval($contact['id']),
|
||||
local_user()
|
||||
);
|
||||
|
||||
if($r)
|
||||
notice( t('Contact settings applied.') . EOL);
|
||||
else
|
||||
notice( t('Contact update failed.') . EOL);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function crepair_content(&$a) {
|
||||
|
||||
if(! local_user()) {
|
||||
notice( t('Permission denied.') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
$cid = (($a->argc > 1) ? intval($a->argv[1]) : 0);
|
||||
|
||||
if($cid) {
|
||||
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($cid),
|
||||
intval(local_user())
|
||||
);
|
||||
}
|
||||
|
||||
if(! count($r)) {
|
||||
notice( t('Contact not found.') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
$contact = $r[0];
|
||||
|
||||
$msg1 = t('Repair Contact Settings');
|
||||
|
||||
$msg2 = t('<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact will stop working.');
|
||||
$msg3 = t('Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.');
|
||||
|
||||
$o .= '<h2>' . $msg1 . '</h2>';
|
||||
|
||||
$o .= '<div class="error-message">' . $msg2 . EOL . EOL. $msg3 . '</div>';
|
||||
|
||||
$tpl = get_markup_template('crepair.tpl');
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$label_name' => t('Name'),
|
||||
'$label_nick' => t('Account Nickname'),
|
||||
'$label_url' => t('Account URL'),
|
||||
'$label_request' => t('Friend Request URL'),
|
||||
'$label_confirm' => t('Friend Confirm URL'),
|
||||
'$label_notify' => t('Notification Endpoint URL'),
|
||||
'$label_poll' => t('Poll/Feed URL'),
|
||||
'$contact_name' => $contact['name'],
|
||||
'$contact_nick' => $contact['nick'],
|
||||
'$contact_id' => $contact['id'],
|
||||
'$contact_url' => $contact['url'],
|
||||
'$request' => $contact['request'],
|
||||
'$confirm' => $contact['confirm'],
|
||||
'$notify' => $contact['notify'],
|
||||
'$poll' => $contact['poll'],
|
||||
'$lbl_submit' => t('Submit')
|
||||
));
|
||||
|
||||
return $o;
|
||||
|
||||
}
|
||||
@@ -240,7 +240,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
||||
notice( t('Unexpected response from remote site: ') . EOL . $leading_junk . EOL );
|
||||
}
|
||||
|
||||
$xml = simplexml_load_string($res);
|
||||
$xml = parse_xml_string($res);
|
||||
$status = (int) $xml->status;
|
||||
$message = unxmlify($xml->message); // human readable text of what may have gone wrong.
|
||||
switch($status) {
|
||||
@@ -423,9 +423,11 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
||||
$arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb'];
|
||||
$arr['verb'] = ACTIVITY_FRIEND;
|
||||
$arr['object-type'] = ACTIVITY_OBJ_PERSON;
|
||||
$arr['body'] = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url] ' . t('is now friends with')
|
||||
. ' [url=' . $contact['url'] . ']' . $contact['name'] . '[/url]' . "\n\n\n"
|
||||
. ' [url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]';
|
||||
|
||||
$A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]';
|
||||
$B = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
|
||||
$BPhoto = '[url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]';
|
||||
$arr['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto;
|
||||
|
||||
$arr['object'] = '<object><type>' . ACTIVITY_OBJ_PERSON . '</type><title>' . $contact['name'] . '</title>'
|
||||
. '<id>' . $contact['url'] . '/' . $contact['name'] . '</id>';
|
||||
@@ -434,6 +436,11 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
||||
$arr['object'] .= '</link></object>' . "\n";
|
||||
$arr['last-child'] = 1;
|
||||
|
||||
$arr['allow_cid'] = $user[0]['allow_cid'];
|
||||
$arr['allow_gid'] = $user[0]['allow_gid'];
|
||||
$arr['deny_cid'] = $user[0]['deny_cid'];
|
||||
$arr['deny_gid'] = $user[0]['deny_gid'];
|
||||
|
||||
$i = item_store($arr);
|
||||
if($i)
|
||||
proc_run('php',"include/notifier.php","activity","$i");
|
||||
@@ -491,7 +498,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
||||
dbesc($node));
|
||||
|
||||
if(! count($r)) {
|
||||
$message = t('No user record found for ') . '\'' . $node . '\'';
|
||||
$message = sprintf(t('No user record found for \'%s\' '), $node);
|
||||
xml_status(3,$message); // failure
|
||||
// NOTREACHED
|
||||
}
|
||||
@@ -632,8 +639,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
||||
if((count($r)) && ($r[0]['notify-flags'] & NOTIFY_CONFIRM)) {
|
||||
|
||||
$tpl = (($new_relation == REL_BUD)
|
||||
? load_view_file('view/friend_complete_eml.tpl')
|
||||
: load_view_file('view/intro_complete_eml.tpl'));
|
||||
? get_intltext_template('friend_complete_eml.tpl')
|
||||
: get_intltext_template('intro_complete_eml.tpl'));
|
||||
|
||||
$email_tpl = replace_macros($tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
@@ -645,8 +652,12 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
||||
'$uid' => $newuid )
|
||||
);
|
||||
|
||||
$res = mail($r[0]['email'], t("Connection accepted at ") . $a->config['sitename'],
|
||||
$email_tpl, 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] );
|
||||
$res = mail($r[0]['email'], sprintf( t("Connection accepted at %s") , $a->config['sitename']),
|
||||
$email_tpl,
|
||||
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
|
||||
. 'Content-type: text/plain; charset=UTF-8' . "\n"
|
||||
. 'Content-transfer-encoding: 8bit' );
|
||||
|
||||
if(!$res) {
|
||||
// pointless throwing an error here and confusing the person at the other end of the wire.
|
||||
}
|
||||
|
||||
@@ -10,6 +10,12 @@ function dfrn_notify_post(&$a) {
|
||||
$data = ((x($_POST,'data')) ? $_POST['data'] : '');
|
||||
$key = ((x($_POST,'key')) ? $_POST['key'] : '');
|
||||
$dissolve = ((x($_POST,'dissolve')) ? intval($_POST['dissolve']) : 0);
|
||||
$perm = ((x($_POST,'perm')) ? notags(trim($_POST['perm'])) : 'r');
|
||||
|
||||
$writable = (-1);
|
||||
if($dfrn_version >= 2.21) {
|
||||
$writable = (($perm === 'rw') ? 1 : 0);
|
||||
}
|
||||
|
||||
$direction = (-1);
|
||||
if(strpos($dfrn_id,':') == 1) {
|
||||
@@ -74,6 +80,14 @@ function dfrn_notify_post(&$a) {
|
||||
|
||||
$importer = $r[0];
|
||||
|
||||
if(($writable != (-1)) && ($writable != $importer['writable'])) {
|
||||
q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
|
||||
intval($writable),
|
||||
intval($importer['id'])
|
||||
);
|
||||
$importer['writable'] = $writable;
|
||||
}
|
||||
|
||||
logger('dfrn_notify: received notify from ' . $importer['name'] . ' for ' . $importer['username']);
|
||||
logger('dfrn_notify: data: ' . $data, LOGGER_DATA);
|
||||
|
||||
@@ -118,8 +132,6 @@ function dfrn_notify_post(&$a) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if($importer['readonly']) {
|
||||
// We aren't receiving stuff from this person. But we will quietly ignore them
|
||||
// rather than a blatant "go away" message.
|
||||
@@ -198,7 +210,7 @@ function dfrn_notify_post(&$a) {
|
||||
= html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r","\\n\\n" ,"\\n"), "<br />\n",$msg['body']))));
|
||||
|
||||
// load the template for private message notifications
|
||||
$tpl = load_view_file('view/mail_received_html_body_eml.tpl');
|
||||
$tpl = get_intltext_template('mail_received_html_body_eml.tpl');
|
||||
$email_html_body_tpl = replace_macros($tpl,array(
|
||||
'$siteName' => $a->config['sitename'], // name of this site
|
||||
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
|
||||
@@ -213,7 +225,7 @@ function dfrn_notify_post(&$a) {
|
||||
));
|
||||
|
||||
// load the template for private message notifications
|
||||
$tpl = load_view_file('view/mail_received_text_body_eml.tpl');
|
||||
$tpl = get_intltext_template('mail_received_text_body_eml.tpl');
|
||||
$email_text_body_tpl = replace_macros($tpl,array(
|
||||
'$siteName' => $a->config['sitename'], // name of this site
|
||||
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
|
||||
@@ -262,10 +274,13 @@ function dfrn_notify_post(&$a) {
|
||||
$when = datetime_convert('UTC','UTC','now','Y-m-d H:i:s');
|
||||
}
|
||||
if($deleted) {
|
||||
$r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
|
||||
|
||||
$r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d AND `contact-id` = %d LIMIT 1",
|
||||
dbesc($uri),
|
||||
intval($importer['importer_uid'])
|
||||
intval($importer['importer_uid']),
|
||||
intval($importer['id'])
|
||||
);
|
||||
|
||||
if(count($r)) {
|
||||
$item = $r[0];
|
||||
|
||||
@@ -374,21 +389,7 @@ function dfrn_notify_post(&$a) {
|
||||
if((! $is_like) && ($importer['notify-flags'] & NOTIFY_COMMENT) && (! $importer['self'])) {
|
||||
require_once('bbcode.php');
|
||||
$from = stripslashes($datarray['author-name']);
|
||||
/*
|
||||
$tpl = load_view_file('view/cmnt_received_eml.tpl');
|
||||
$email_tpl = replace_macros($tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
'$username' => $importer['username'],
|
||||
'$email' => $importer['email'],
|
||||
'$display' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id,
|
||||
'$from' => $from,
|
||||
'$body' => html_entity_decode(strip_tags(bbcode(stripslashes($datarray['body']))), ENT_QUOTES, 'UTF-8')
|
||||
));
|
||||
|
||||
$res = mail($importer['email'], $from . t(' commented on an item at ') . $a->config['sitename'],
|
||||
$email_tpl, "From: " . t('Administrator') . '@' . $a->get_hostname() );
|
||||
*/
|
||||
|
||||
// name of the automated email sender
|
||||
$msg['notificationfromname'] = stripslashes($datarray['author-name']);;
|
||||
// noreply address to send from
|
||||
@@ -405,7 +406,7 @@ function dfrn_notify_post(&$a) {
|
||||
= html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r","\\n\\n" ,"\\n"), "<br />\n",$datarray['body']))));
|
||||
|
||||
// load the template for private message notifications
|
||||
$tpl = load_view_file('view/cmnt_received_html_body_eml.tpl');
|
||||
$tpl = get_intltext_template('cmnt_received_html_body_eml.tpl');
|
||||
$email_html_body_tpl = replace_macros($tpl,array(
|
||||
'$sitename' => $a->config['sitename'], // name of this site
|
||||
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
|
||||
@@ -418,7 +419,7 @@ function dfrn_notify_post(&$a) {
|
||||
));
|
||||
|
||||
// load the template for private message notifications
|
||||
$tpl = load_view_file('view/cmnt_received_text_body_eml.tpl');
|
||||
$tpl = get_intltext_template('cmnt_received_text_body_eml.tpl');
|
||||
$email_text_body_tpl = replace_macros($tpl,array(
|
||||
'$sitename' => $a->config['sitename'], // name of this site
|
||||
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
|
||||
@@ -515,24 +516,6 @@ function dfrn_notify_post(&$a) {
|
||||
continue;
|
||||
require_once('bbcode.php');
|
||||
$from = stripslashes($datarray['author-name']);
|
||||
/*
|
||||
$tpl = load_view_file('view/cmnt_received_eml.tpl');
|
||||
$email_tpl = replace_macros($tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
'$username' => $importer['username'],
|
||||
'$email' => $importer['email'],
|
||||
'$from' => $from,
|
||||
'$display' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $r,
|
||||
'$body' => html_entity_decode(strip_tags(bbcode(stripslashes($datarray['body']))), ENT_QUOTES, 'UTF-8')
|
||||
));
|
||||
|
||||
$res = mail($importer['email'], $from . t(" commented on an item at ")
|
||||
. $a->config['sitename'],
|
||||
$email_tpl,t("From: Administrator@") . $a->get_hostname() );
|
||||
*/
|
||||
|
||||
|
||||
|
||||
// name of the automated email sender
|
||||
$msg['notificationfromname'] = stripslashes($datarray['author-name']);;
|
||||
@@ -550,7 +533,7 @@ function dfrn_notify_post(&$a) {
|
||||
= html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r","\\n\\n" ,"\\n"), "<br />\n",$datarray['body']))));
|
||||
|
||||
// load the template for private message notifications
|
||||
$tpl = load_view_file('view/cmnt_received_html_body_eml.tpl');
|
||||
$tpl = get_intltext_template('cmnt_received_html_body_eml.tpl');
|
||||
$email_html_body_tpl = replace_macros($tpl,array(
|
||||
'$sitename' => $a->config['sitename'], // name of this site
|
||||
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
|
||||
@@ -562,7 +545,7 @@ function dfrn_notify_post(&$a) {
|
||||
));
|
||||
|
||||
// load the template for private message notifications
|
||||
$tpl = load_view_file('view/cmnt_received_text_body_eml.tpl');
|
||||
$tpl = get_intltext_template('cmnt_received_text_body_eml.tpl');
|
||||
$email_text_body_tpl = replace_macros($tpl,array(
|
||||
'$sitename' => $a->config['sitename'], // name of this site
|
||||
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
|
||||
|
||||
@@ -16,6 +16,7 @@ function dfrn_poll_init(&$a) {
|
||||
$challenge = ((x($_GET,'challenge')) ? $_GET['challenge'] : '');
|
||||
$sec = ((x($_GET,'sec')) ? $_GET['sec'] : '');
|
||||
$dfrn_version = ((x($_GET,'dfrn_version')) ? (float) $_GET['dfrn_version'] : 2.0);
|
||||
$perm = ((x($_GET,'perm')) ? $_GET['perm'] : 'r');
|
||||
|
||||
$direction = (-1);
|
||||
|
||||
@@ -26,6 +27,10 @@ function dfrn_poll_init(&$a) {
|
||||
}
|
||||
|
||||
if(($dfrn_id === '') && (! x($_POST,'dfrn_id')) && ($a->argc > 1)) {
|
||||
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
|
||||
killme();
|
||||
}
|
||||
|
||||
logger('dfrn_poll: public feed request from ' . $_SERVER['REMOTE_ADDR'] );
|
||||
header("Content-type: application/atom+xml");
|
||||
$o = get_feed_for($a, '', $a->argv[1],$last_update);
|
||||
@@ -69,13 +74,14 @@ function dfrn_poll_init(&$a) {
|
||||
|
||||
if(strlen($s)) {
|
||||
|
||||
$xml = simplexml_load_string($s);
|
||||
$xml = parse_xml_string($s);
|
||||
|
||||
if((int) $xml->status == 1) {
|
||||
$_SESSION['authenticated'] = 1;
|
||||
$_SESSION['visitor_id'] = $r[0]['id'];
|
||||
$_SESSION['visitor_home'] = $r[0]['url'];
|
||||
notice( $r[0]['username'] . t(' welcomes ') . $r[0]['name'] . EOL);
|
||||
$_SESSION['visitor_visiting'] = $r[0]['uid'];
|
||||
notice( sprintf(t('%s welcomes %s'), $r[0]['username'] , $r[0]['name']) . EOL);
|
||||
// Visitors get 1 day session.
|
||||
$session_id = session_id();
|
||||
$expire = time() + 86400;
|
||||
@@ -92,7 +98,7 @@ function dfrn_poll_init(&$a) {
|
||||
|
||||
}
|
||||
|
||||
if($type === 'profile-check') {
|
||||
if($type === 'profile-check' && $dfrn_version < 2.2 ) {
|
||||
|
||||
if((strlen($challenge)) && (strlen($sec))) {
|
||||
|
||||
@@ -182,7 +188,69 @@ function dfrn_poll_post(&$a) {
|
||||
$dfrn_id = ((x($_POST,'dfrn_id')) ? $_POST['dfrn_id'] : '');
|
||||
$challenge = ((x($_POST,'challenge')) ? $_POST['challenge'] : '');
|
||||
$url = ((x($_POST,'url')) ? $_POST['url'] : '');
|
||||
$sec = ((x($_POST,'sec')) ? $_POST['sec'] : '');
|
||||
$ptype = ((x($_POST,'type')) ? $_POST['type'] : '');
|
||||
$dfrn_version = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0);
|
||||
$perm = ((x($_POST,'perm')) ? $_POST['perm'] : 'r');
|
||||
|
||||
if($ptype === 'profile-check') {
|
||||
|
||||
if((strlen($challenge)) && (strlen($sec))) {
|
||||
|
||||
logger('dfrn_poll: POST: profile-check');
|
||||
|
||||
q("DELETE FROM `profile_check` WHERE `expire` < " . intval(time()));
|
||||
$r = q("SELECT * FROM `profile_check` WHERE `sec` = '%s' ORDER BY `expire` DESC LIMIT 1",
|
||||
dbesc($sec)
|
||||
);
|
||||
if(! count($r)) {
|
||||
xml_status(3, 'No ticket');
|
||||
// NOTREACHED
|
||||
}
|
||||
$orig_id = $r[0]['dfrn_id'];
|
||||
if(strpos($orig_id, ':'))
|
||||
$orig_id = substr($orig_id,2);
|
||||
|
||||
$c = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
|
||||
intval($r[0]['cid'])
|
||||
);
|
||||
if(! count($c)) {
|
||||
xml_status(3, 'No profile');
|
||||
}
|
||||
$contact = $c[0];
|
||||
|
||||
$sent_dfrn_id = hex2bin($dfrn_id);
|
||||
$challenge = hex2bin($challenge);
|
||||
|
||||
$final_dfrn_id = '';
|
||||
|
||||
if(($contact['duplex']) && strlen($contact['prvkey'])) {
|
||||
openssl_private_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['prvkey']);
|
||||
openssl_private_decrypt($challenge,$decoded_challenge,$contact['prvkey']);
|
||||
}
|
||||
else {
|
||||
openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['pubkey']);
|
||||
openssl_public_decrypt($challenge,$decoded_challenge,$contact['pubkey']);
|
||||
}
|
||||
|
||||
$final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.'));
|
||||
|
||||
if(strpos($final_dfrn_id,':') == 1)
|
||||
$final_dfrn_id = substr($final_dfrn_id,2);
|
||||
|
||||
if($final_dfrn_id != $orig_id) {
|
||||
logger('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, LOGGER_DEBUG);
|
||||
// did not decode properly - cannot trust this site
|
||||
xml_status(3, 'Bad decryption');
|
||||
}
|
||||
|
||||
header("Content-type: text/xml");
|
||||
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dfrn_poll><status>0</status><challenge>$decoded_challenge</challenge><sec>$sec</sec></dfrn_poll>";
|
||||
killme();
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$direction = (-1);
|
||||
if(strpos($dfrn_id,':') == 1) {
|
||||
@@ -234,6 +302,7 @@ function dfrn_poll_post(&$a) {
|
||||
if(! count($r))
|
||||
killme();
|
||||
|
||||
$contact = $r[0];
|
||||
$owner_uid = $r[0]['uid'];
|
||||
$contact_id = $r[0]['id'];
|
||||
|
||||
@@ -267,6 +336,23 @@ function dfrn_poll_post(&$a) {
|
||||
// NOTREACHED
|
||||
}
|
||||
else {
|
||||
|
||||
// Update the writable flag if it changed
|
||||
logger('dfrn_poll: post request feed: ' . print_r($_POST,true),LOGGER_DATA);
|
||||
if($dfrn_version >= 2.21) {
|
||||
if($perm === 'rw')
|
||||
$writable = 1;
|
||||
else
|
||||
$writable = 0;
|
||||
|
||||
if($writable != $contact['writable']) {
|
||||
q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
|
||||
intval($writable),
|
||||
intval($contact_id)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
header("Content-type: application/atom+xml");
|
||||
$o = get_feed_for($a,$dfrn_id, $a->argv[1], $last_update, $direction);
|
||||
echo $o;
|
||||
@@ -283,6 +369,7 @@ function dfrn_poll_content(&$a) {
|
||||
$destination_url = ((x($_GET,'destination_url')) ? $_GET['destination_url'] : '');
|
||||
$sec = ((x($_GET,'sec')) ? $_GET['sec'] : '');
|
||||
$dfrn_version = ((x($_GET,'dfrn_version')) ? (float) $_GET['dfrn_version'] : 2.0);
|
||||
$perm = ((x($_GET,'perm')) ? $_GET['perm'] : 'r');
|
||||
|
||||
$direction = (-1);
|
||||
if(strpos($dfrn_id,':') == 1) {
|
||||
@@ -363,21 +450,51 @@ function dfrn_poll_content(&$a) {
|
||||
}
|
||||
|
||||
if(($type === 'profile') && (strlen($sec))) {
|
||||
|
||||
// URL reply
|
||||
|
||||
$s = fetch_url($r[0]['poll']
|
||||
. '?dfrn_id=' . $encrypted_id
|
||||
. '&type=profile-check'
|
||||
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION
|
||||
. '&challenge=' . $challenge
|
||||
. '&sec=' . $sec
|
||||
);
|
||||
if($dfrn_version < 2.2) {
|
||||
$s = fetch_url($r[0]['poll']
|
||||
. '?dfrn_id=' . $encrypted_id
|
||||
. '&type=profile-check'
|
||||
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION
|
||||
. '&challenge=' . $challenge
|
||||
. '&sec=' . $sec
|
||||
);
|
||||
}
|
||||
else {
|
||||
$s = post_url($r[0]['poll'], array(
|
||||
'dfrn_id' => $encrypted_id,
|
||||
'type' => 'profile-check',
|
||||
'dfrn_version' => DFRN_PROTOCOL_VERSION,
|
||||
'challenge' => $challenge,
|
||||
'sec' => $sec
|
||||
));
|
||||
}
|
||||
|
||||
$profile = $r[0]['nickname'];
|
||||
|
||||
switch($destination_url) {
|
||||
case 'profile':
|
||||
$dest = $a->get_baseurl() . '/profile/' . $profile . '?tab=profile';
|
||||
break;
|
||||
case 'photos':
|
||||
$dest = $a->get_baseurl() . '/photos/' . $profile;
|
||||
break;
|
||||
case 'status':
|
||||
case '':
|
||||
$dest = $a->get_baseurl() . '/profile/' . $profile;
|
||||
break;
|
||||
default:
|
||||
$dest = $destination_url;
|
||||
break;
|
||||
}
|
||||
|
||||
logger("dfrn_poll: sec profile: " . $s, LOGGER_DATA);
|
||||
|
||||
if(strlen($s) && strstr($s,'<?xml')) {
|
||||
|
||||
$xml = simplexml_load_string($s);
|
||||
$xml = parse_xml_string($s);
|
||||
|
||||
logger('dfrn_poll: profile: parsed xml: ' . print_r($xml,true), LOGGER_DATA);
|
||||
|
||||
@@ -389,7 +506,8 @@ function dfrn_poll_content(&$a) {
|
||||
$_SESSION['authenticated'] = 1;
|
||||
$_SESSION['visitor_id'] = $r[0]['id'];
|
||||
$_SESSION['visitor_home'] = $r[0]['url'];
|
||||
notice( $r[0]['username'] . t(' welcomes ') . $r[0]['name'] . EOL);
|
||||
$_SESSION['visitor_visiting'] = $r[0]['uid'];
|
||||
notice( sprintf(t('%s welcomes %s'), $r[0]['username'] , $r[0]['name']) . EOL);
|
||||
// Visitors get 1 day session.
|
||||
$session_id = session_id();
|
||||
$expire = time() + 86400;
|
||||
@@ -398,10 +516,10 @@ function dfrn_poll_content(&$a) {
|
||||
dbesc($session_id)
|
||||
);
|
||||
}
|
||||
$profile = $r[0]['nickname'];
|
||||
goaway((strlen($destination_url)) ? $destination_url : $a->get_baseurl() . '/profile/' . $profile);
|
||||
|
||||
goaway($dest);
|
||||
}
|
||||
goaway($a->get_baseurl());
|
||||
goaway($dest);
|
||||
// NOTREACHED
|
||||
|
||||
}
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
if(! function_exists('dfrn_request_init')) {
|
||||
function dfrn_request_init(&$a) {
|
||||
|
||||
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
|
||||
return;
|
||||
}
|
||||
|
||||
if($a->argc > 1)
|
||||
$which = $a->argv[1];
|
||||
|
||||
@@ -123,9 +127,9 @@ function dfrn_request_post(&$a) {
|
||||
notice( t('Warning: profile location has no profile photo.') . EOL );
|
||||
$invalid = validate_dfrn($parms);
|
||||
if($invalid) {
|
||||
notice( $invalid . t(' required parameter')
|
||||
. (($invalid == 1) ? t(" was ") : t("s were ") )
|
||||
. t("not found at the given location.") . EOL ) ;
|
||||
notice( sprintf( tt("%d required parameter was not found at the given location",
|
||||
"%d required parameters were not found at the given location",
|
||||
$invalid), $invalid) . EOL );
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -238,7 +242,7 @@ function dfrn_request_post(&$a) {
|
||||
intval($uid)
|
||||
);
|
||||
if(count($r) > $maxreq) {
|
||||
notice( $a->profile['name'] . t(' has received too many connection requests today.') . EOL);
|
||||
notice( sprintf( t('%s has received too many connection requests today.'), $a->profile['name']) . EOL);
|
||||
notice( t('Spam protection measures have been invoked.') . EOL);
|
||||
notice( t('Friends are advised to please try again in 24 hours.') . EOL);
|
||||
return;
|
||||
@@ -306,7 +310,7 @@ function dfrn_request_post(&$a) {
|
||||
return;
|
||||
}
|
||||
elseif($ret[0]['rel'] == REL_BUD) {
|
||||
notice( t('Apparently you are already friends with .') . $a->profile['name'] . EOL);
|
||||
notice( sprintf( t('Apparently you are already friends with %s.'), $a->profile['name']) . EOL);
|
||||
return;
|
||||
}
|
||||
else {
|
||||
@@ -354,9 +358,9 @@ function dfrn_request_post(&$a) {
|
||||
notice( t('Warning: profile location has no profile photo.') . EOL );
|
||||
$invalid = validate_dfrn($parms);
|
||||
if($invalid) {
|
||||
notice( $invalid . t(' required parameter')
|
||||
. (($invalid == 1) ? t(" was ") : t("s were ") )
|
||||
. t("not found at the given location.") . EOL ) ;
|
||||
notice( sprintf( tt("%d required parameter was not found at the given location",
|
||||
"%d required parameters were not found at the given location",
|
||||
$invalid), $invalid) . EOL );
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -495,12 +499,14 @@ function dfrn_request_content(&$a) {
|
||||
$dfrn_url = notags(trim(hex2bin($_GET['dfrn_url'])));
|
||||
$aes_allow = (((x($_GET,'aes_allow')) && ($_GET['aes_allow'] == 1)) ? 1 : 0);
|
||||
$confirm_key = (x($_GET,'confirm_key') ? $_GET['confirm_key'] : "");
|
||||
$o .= load_view_file("view/dfrn_req_confirm.tpl");
|
||||
$o = replace_macros($o,array(
|
||||
$tpl = get_markup_template("dfrn_req_confirm.tpl");
|
||||
$o = replace_macros($tpl,array(
|
||||
'$dfrn_url' => $dfrn_url,
|
||||
'$aes_allow' => (($aes_allow) ? '<input type="hidden" name="aes_allow" value="1" />' : "" ),
|
||||
'$confirm_key' => $confirm_key,
|
||||
'$username' => $a->user['username'],
|
||||
'$welcome' => sprintf( t('Welcome home %s.'), $a->user['username']),
|
||||
'$please' => sprintf( t('Please confirm your introduction/connection request to %s.'), $dfrn_url),
|
||||
'$submit' => t('Confirm'),
|
||||
'$uid' => $_SESSION['uid'],
|
||||
'$nickname' => $a->user['nickname'],
|
||||
'dfrn_rawurl' => $_GET['dfrn_url']
|
||||
@@ -531,7 +537,7 @@ function dfrn_request_content(&$a) {
|
||||
if($r[0]['page-flags'] != PAGE_NORMAL)
|
||||
$auto_confirm = true;
|
||||
if(($r[0]['notify-flags'] & NOTIFY_INTRO) && (! $auto_confirm)) {
|
||||
$email_tpl = load_view_file('view/request_notify_eml.tpl');
|
||||
$email_tpl = get_intltext_template('request_notify_eml.tpl');
|
||||
$email = replace_macros($email_tpl, array(
|
||||
'$requestor' => ((strlen(stripslashes($r[0]['name']))) ? stripslashes($r[0]['name']) : t('[Name Withheld]')),
|
||||
'$url' => stripslashes($r[0]['url']),
|
||||
@@ -540,9 +546,12 @@ function dfrn_request_content(&$a) {
|
||||
'$sitename' => $a->config['sitename']
|
||||
));
|
||||
$res = mail($r[0]['email'],
|
||||
t("Introduction received at ") . $a->config['sitename'],
|
||||
t("Introduction received at ") . $a->config['sitename'],
|
||||
$email,
|
||||
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] );
|
||||
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
|
||||
. 'Content-type: text/plain; charset=UTF-8' . "\n"
|
||||
. 'Content-transfer-encoding: 8bit' );
|
||||
|
||||
// This is a redundant notification - no point throwing errors if it fails.
|
||||
}
|
||||
if($auto_confirm) {
|
||||
@@ -578,6 +587,12 @@ function dfrn_request_content(&$a) {
|
||||
* Normal web request. Display our user's introduction form.
|
||||
*/
|
||||
|
||||
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
|
||||
notice( t('Public access denied.') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Try to auto-fill the profile address
|
||||
*/
|
||||
@@ -607,23 +622,24 @@ function dfrn_request_content(&$a) {
|
||||
*/
|
||||
|
||||
if($a->profile['page-flags'] == PAGE_NORMAL)
|
||||
$tpl = load_view_file('view/dfrn_request.tpl');
|
||||
$tpl = get_markup_template('dfrn_request.tpl');
|
||||
else
|
||||
$tpl = load_view_file('view/auto_request.tpl');
|
||||
$tpl = get_markup_template('auto_request.tpl');
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$header' => t('Friend/Connection Request'),
|
||||
'$desc' => t('Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca'),
|
||||
'$pls_answer' => t('Please answer the following:'),
|
||||
'$does_know' => t('Does $name know you?'),
|
||||
'$yes' => t('Yes'),
|
||||
'$no' => t('No'),
|
||||
'$add_note' => t('Add a personal note:'),
|
||||
'$page_desc' => t('Please enter your profile address from one of the following supported social networks:'),
|
||||
'$page_desc' => t("Please enter your 'Identity Address' from one of the following supported social networks:"),
|
||||
'$friendika' => t('Friendika'),
|
||||
'$statusnet' => t('StatusNet/Federated Social Web'),
|
||||
'$private_net' => t("Private \x28secure\x29 network"),
|
||||
'$public_net' => t("Public \x28insecure\x29 network"),
|
||||
'$your_address' => t('Your profile address:'),
|
||||
'$your_address' => t('Your Identity Address:'),
|
||||
'$submit' => t('Submit Request'),
|
||||
'$cancel' => t('Cancel'),
|
||||
'$nickname' => $a->argv[1],
|
||||
|
||||
@@ -13,6 +13,14 @@ function directory_post(&$a) {
|
||||
|
||||
|
||||
function directory_content(&$a) {
|
||||
|
||||
$everything = (($a->argc > 1 && $a->argv[1] === 'all' && is_site_admin()) ? true : false);
|
||||
|
||||
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
|
||||
notice( t('Public access denied.') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
$o = '';
|
||||
$o .= '<script> $(document).ready(function() { $(\'#nav-directory-link\').addClass(\'nav-selected\'); });</script>';
|
||||
if(x($_SESSION,'theme'))
|
||||
@@ -23,7 +31,7 @@ function directory_content(&$a) {
|
||||
else
|
||||
$search = ((x($_GET,'search')) ? notags(trim(rawurldecode($_GET['search']))) : '');
|
||||
|
||||
$tpl = load_view_file('view/directory_header.tpl');
|
||||
$tpl = get_markup_template('directory_header.tpl');
|
||||
|
||||
$globaldir = '';
|
||||
$gdirpath = dirname(get_config('system','directory_submit_url'));
|
||||
@@ -32,32 +40,47 @@ function directory_content(&$a) {
|
||||
. $gdirpath . '">' . t('Global Directory') . '</a></div></li></ul>';
|
||||
}
|
||||
|
||||
$admin = '';
|
||||
if(is_site_admin()) {
|
||||
if($everything)
|
||||
$admin = '<ul><li><div id="directory-admin-link"><a href="' . $a->get_baseurl() . '/directory' . '">' . t('Normal site view') . '</a></div></li></ul>';
|
||||
else
|
||||
$admin = '<ul><li><div id="directory-admin-link"><a href="' . $a->get_baseurl() . '/directory/all' . '">' . t('View all site entries') . '</a></div></li></ul>';
|
||||
}
|
||||
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$search' => $search,
|
||||
'$globaldir' => $globaldir,
|
||||
'$finding' => (strlen($search) ? '<h4>' . t('Finding: ') . "'" . $search . "'" . '</h4>' : "")
|
||||
'$admin' => $admin,
|
||||
'$finding' => (strlen($search) ? '<h4>' . t('Finding: ') . "'" . $search . "'" . '</h4>' : ""),
|
||||
'$sitedir' => t('Site Directory'),
|
||||
'$submit' => t('Find')
|
||||
));
|
||||
|
||||
if($search)
|
||||
$search = dbesc($search);
|
||||
$sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country-name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : "");
|
||||
$sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country-name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`pub_keywords`,`prv_keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : "");
|
||||
|
||||
$publish = ((get_config('system','publish_all')) ? '' : " AND `publish` = 1 " );
|
||||
$publish = ((get_config('system','publish_all') || $everything) ? '' : " AND `publish` = 1 " );
|
||||
|
||||
|
||||
$r = q("SELECT COUNT(*) AS `total` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra ");
|
||||
if(count($r))
|
||||
$a->set_pager_total($r[0]['total']);
|
||||
|
||||
if($everything)
|
||||
$order = " ORDER BY `register_date` DESC ";
|
||||
else
|
||||
$order = " ORDER BY `name` ASC ";
|
||||
|
||||
|
||||
$r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra ORDER BY `name` ASC LIMIT %d , %d ",
|
||||
$r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ",
|
||||
intval($a->pager['start']),
|
||||
intval($a->pager['itemspage'])
|
||||
);
|
||||
if(count($r)) {
|
||||
|
||||
$tpl = load_view_file('view/directory_item.tpl');
|
||||
$tpl = get_markup_template('directory_item.tpl');
|
||||
|
||||
if(in_array('small', $a->argv))
|
||||
$photo = 'thumb';
|
||||
@@ -86,10 +109,10 @@ function directory_content(&$a) {
|
||||
}
|
||||
if(strlen($rr['dob'])) {
|
||||
if(($years = age($rr['dob'],$rr['timezone'],'')) != 0)
|
||||
$details .= "<br />Age: $years" ;
|
||||
$details .= '<br />' . t('Age: ') . $years ;
|
||||
}
|
||||
if(strlen($rr['gender']))
|
||||
$details .= '<br />Gender: ' . $rr['gender'];
|
||||
$details .= '<br />' . t('Gender: ') . $rr['gender'];
|
||||
|
||||
$entry = replace_macros($tpl,array(
|
||||
'$id' => $rr['id'],
|
||||
@@ -115,7 +138,7 @@ function directory_content(&$a) {
|
||||
|
||||
}
|
||||
else
|
||||
notice("No entries (some entries may be hidden).");
|
||||
notice( t("No entries \x28some entries may be hidden\x29.") . EOL);
|
||||
|
||||
return $o;
|
||||
}
|
||||
199
mod/display.php
199
mod/display.php
@@ -3,6 +3,16 @@
|
||||
|
||||
function display_content(&$a) {
|
||||
|
||||
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');
|
||||
|
||||
|
||||
$o = '<div id="live-display"></div>' . "\r\n";
|
||||
|
||||
$nick = (($a->argc > 1) ? $a->argv[1] : '');
|
||||
@@ -16,15 +26,10 @@ function display_content(&$a) {
|
||||
return;
|
||||
}
|
||||
|
||||
require_once("include/bbcode.php");
|
||||
require_once('include/security.php');
|
||||
|
||||
|
||||
$groups = array();
|
||||
|
||||
$tab = 'posts';
|
||||
|
||||
|
||||
$contact = null;
|
||||
$remote_contact = false;
|
||||
|
||||
@@ -48,6 +53,11 @@ function display_content(&$a) {
|
||||
}
|
||||
}
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
|
||||
intval($a->profile['uid'])
|
||||
);
|
||||
if(count($r))
|
||||
$a->page_contact = $r[0];
|
||||
|
||||
$sql_extra = "
|
||||
AND `allow_cid` = ''
|
||||
@@ -88,7 +98,7 @@ function display_content(&$a) {
|
||||
|
||||
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`self`,
|
||||
`contact`.`network`, `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`.`deleted` = 0
|
||||
@@ -102,17 +112,6 @@ function display_content(&$a) {
|
||||
);
|
||||
|
||||
|
||||
|
||||
$cmnt_tpl = load_view_file('view/comment_item.tpl');
|
||||
$like_tpl = load_view_file('view/like.tpl');
|
||||
$tpl = load_view_file('view/wall_item.tpl');
|
||||
$wallwall = load_view_file('view/wallwall_item.tpl');
|
||||
|
||||
$return_url = $_SESSION['return_url'] = $a->cmd;
|
||||
|
||||
$alike = array();
|
||||
$dlike = array();
|
||||
|
||||
if(count($r)) {
|
||||
|
||||
if((local_user()) && (local_user() == $a->profile['uid'])) {
|
||||
@@ -122,173 +121,9 @@ function display_content(&$a) {
|
||||
);
|
||||
}
|
||||
|
||||
foreach($r as $item) {
|
||||
like_puller($a,$item,$alike,'like');
|
||||
like_puller($a,$item,$dlike,'dislike');
|
||||
}
|
||||
|
||||
$author_contacts = extract_item_authors($r,$a->profile['uid']);
|
||||
$o .= conversation($a,$r,'display', false);
|
||||
|
||||
foreach($r as $item) {
|
||||
|
||||
$template = $tpl;
|
||||
|
||||
$comment = '';
|
||||
$owner_url = '';
|
||||
$owner_photo = '';
|
||||
$owner_name = '';
|
||||
|
||||
$redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
|
||||
|
||||
if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
|
||||
&& ($item['id'] != $item['parent']))
|
||||
continue;
|
||||
|
||||
$lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
|
||||
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
|
||||
? '<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,' . $item['id'] . ');" /></div>'
|
||||
: '<div class="wall-item-lock"></div>');
|
||||
|
||||
if(can_write_wall($a,$a->profile['uid'])) {
|
||||
if($item['id'] == $item['parent']) {
|
||||
$likebuttons = replace_macros($like_tpl,array(
|
||||
'$id' => $item['id'],
|
||||
'$likethis' => t("I like this \x28toggle\x29"),
|
||||
'$nolike' => t("I don't like this \x28toggle\x29"),
|
||||
'$wait' => t('Please wait')
|
||||
));
|
||||
}
|
||||
if($item['last-child']) {
|
||||
$comment = replace_macros($cmnt_tpl,array(
|
||||
'$return_path' => '',
|
||||
'$jsreload' => $_SESSION['return_url'],
|
||||
'$type' => 'wall-comment',
|
||||
'$id' => $item['item_id'],
|
||||
'$parent' => $item['parent'],
|
||||
'$profile_uid' => $a->profile['uid'],
|
||||
'$mylink' => $contact['url'],
|
||||
'$mytitle' => t('This is you'),
|
||||
'$myphoto' => $contact['thumb'],
|
||||
'$ww' => ''
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$profile_url = $item['url'];
|
||||
$sparkle = '';
|
||||
|
||||
|
||||
// Top-level wall post not written by the wall owner (wall-to-wall)
|
||||
// First figure out who owns it.
|
||||
|
||||
$osparkle = '';
|
||||
|
||||
if(($item['parent'] == $item['item_id']) && (! $item['self'])) {
|
||||
|
||||
if($item['type'] === 'wall') {
|
||||
// I do. Put me on the left of the wall-to-wall notice.
|
||||
$owner_url = $a->contact['url'];
|
||||
$owner_photo = $a->contact['thumb'];
|
||||
$owner_name = $a->contact['name'];
|
||||
$template = $wallwall;
|
||||
$commentww = 'ww';
|
||||
}
|
||||
if($item['type'] === 'remote' && ($item['owner-link'] != $item['author-link'])) {
|
||||
// Could be anybody.
|
||||
$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'] === 'dfrn')) {
|
||||
$owner_url = $redirect_url;
|
||||
$osparkle = ' sparkle';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true);
|
||||
|
||||
$profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
|
||||
$profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $item['thumb']);
|
||||
|
||||
// Can we use our special contact URL for this author?
|
||||
|
||||
if(strlen($item['author-link'])) {
|
||||
$profile_link = $item['author-link'];
|
||||
if(link_compare($item['author-link'],$item['url']) && ($item['network'] === 'dfrn') && (! $item['self'])) {
|
||||
$profile_link = $redirect_url;
|
||||
$sparkle = ' sparkle';
|
||||
}
|
||||
elseif(isset($author_contacts[$item['author-link']])) {
|
||||
$profile_link = $a->get_baseurl() . '/redir/' . $author_contacts[$item['author-link']];
|
||||
$sparkle = ' sparkle';
|
||||
}
|
||||
}
|
||||
|
||||
if(($item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
|
||||
$drop = replace_macros(load_view_file('view/wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
|
||||
else
|
||||
$drop = replace_macros(load_view_file('view/wall_fake_drop.tpl'), array('$id' => $item['id']));
|
||||
|
||||
$like = ((isset($alike[$item['id']])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : '');
|
||||
$dislike = ((isset($dlike[$item['id']])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : '');
|
||||
|
||||
$location = (($item['location']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
if($coord) {
|
||||
if($location)
|
||||
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
|
||||
else
|
||||
$location = '<span class="smalltext">' . $coord . '</span>';
|
||||
}
|
||||
|
||||
$indent = (($item['parent'] != $item['item_id']) ? ' comment' : '');
|
||||
|
||||
if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
|
||||
$indent .= ' shiny';
|
||||
|
||||
|
||||
$tmp_item = replace_macros($template,array(
|
||||
'$id' => $item['item_id'],
|
||||
'$linktitle' => t('View $name\'s profile'),
|
||||
'$olinktitle' => t('View $owner_name\'s profile'),
|
||||
'$to' => t('to'),
|
||||
'$wall' => t('Wall-to-Wall'),
|
||||
'$vwall' => t('via Wall-To-Wall:'),
|
||||
'$profile_url' => $profile_link,
|
||||
'$name' => $profile_name,
|
||||
'$sparkle' => $sparkle,
|
||||
'$osparkle' => $osparkle,
|
||||
'$thumb' => $profile_avatar,
|
||||
'$title' => $item['title'],
|
||||
'$body' => smilies(bbcode($item['body'])),
|
||||
'$ago' => relative_date($item['created']),
|
||||
'$lock' => $lock,
|
||||
'$location' => $location,
|
||||
'$indent' => $indent,
|
||||
'$owner_url' => $owner_url,
|
||||
'$owner_photo' => $owner_photo,
|
||||
'$owner_name' => $owner_name,
|
||||
'$plink' => get_plink($item),
|
||||
'$drop' => $drop,
|
||||
'$vote' => $likebuttons,
|
||||
'$like' => $like,
|
||||
'$dislike' => $dislike,
|
||||
'$comment' => $comment
|
||||
));
|
||||
|
||||
$arr = array('item' => $item, 'output' => $tmp_item);
|
||||
call_hooks('display_item', $arr);
|
||||
|
||||
$o .= $arr['output'];
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
else {
|
||||
$r = q("SELECT `id` FROM `item` WHERE `id` = '%s' OR `uri` = '%s' LIMIT 1",
|
||||
|
||||
120
mod/editpost.php
Normal file
120
mod/editpost.php
Normal file
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
require_once('acl_selectors.php');
|
||||
|
||||
function editpost_content(&$a) {
|
||||
|
||||
$o = '';
|
||||
|
||||
if(! local_user()) {
|
||||
notice( t('Permission denied.') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
$post_id = (($a->argc > 1) ? intval($a->argv[1]) : 0);
|
||||
|
||||
if(! $post_id) {
|
||||
notice( t('Item not found') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
$itm = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($post_id),
|
||||
intval(local_user())
|
||||
);
|
||||
|
||||
if(! count($itm)) {
|
||||
notice( t('Item not found') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$o .= '<h2>' . t('Edit post') . '</h2>';
|
||||
|
||||
$tpl = get_markup_template('jot-header.tpl');
|
||||
|
||||
$a->page['htmlhead'] .= replace_macros($tpl, array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$ispublic' => ' ', // t('Visible to <strong>everybody</strong>'),
|
||||
'$geotag' => $geotag,
|
||||
'$nickname' => $a->user['nickname']
|
||||
));
|
||||
|
||||
|
||||
$tpl = get_markup_template("jot.tpl");
|
||||
|
||||
if(($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid'])))))
|
||||
$lockstate = 'lock';
|
||||
else
|
||||
$lockstate = 'unlock';
|
||||
|
||||
$celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
|
||||
|
||||
$jotplugins = '';
|
||||
$jotnets = '';
|
||||
|
||||
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
|
||||
|
||||
$mail_enabled = false;
|
||||
$pubmail_enabled = false;
|
||||
|
||||
if(! $mail_disabled) {
|
||||
$r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1",
|
||||
intval(local_user())
|
||||
);
|
||||
if(count($r)) {
|
||||
$mail_enabled = true;
|
||||
if(intval($r[0]['pubmail']))
|
||||
$pubmail_enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
if($mail_enabled) {
|
||||
$selected = (($pubmail_enabled) ? ' checked="checked" ' : '');
|
||||
$jotnets .= '<div class="profile-jot-net"><input type="checkbox" name="pubmail_enable"' . $selected . 'value="1" /> '
|
||||
. t("Post to Email") . '</div>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
call_hooks('jot_tool', $jotplugins);
|
||||
call_hooks('jot_networks', $jotnets);
|
||||
|
||||
$tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$return_path' => $_SESSION['return_url'],
|
||||
'$action' => 'item',
|
||||
'$share' => t('Edit'),
|
||||
'$upload' => t('Upload photo'),
|
||||
'$weblink' => t('Insert web link'),
|
||||
'$youtube' => t('Insert YouTube video'),
|
||||
'$video' => t('Insert Vorbis [.ogg] video'),
|
||||
'$audio' => t('Insert Vorbis [.ogg] audio'),
|
||||
'$setloc' => t('Set your location'),
|
||||
'$noloc' => t('Clear browser location'),
|
||||
'$wait' => t('Please wait'),
|
||||
'$permset' => t('Permission settings'),
|
||||
'$ptyp' => $itm[0]['type'],
|
||||
'$content' => $itm[0]['body'],
|
||||
'$post_id' => $post_id,
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$defloc' => $a->user['default-location'],
|
||||
'$visitor' => 'none',
|
||||
'$pvisit' => 'none',
|
||||
'$emailcc' => t('CC: email addresses'),
|
||||
'$public' => t('Public post'),
|
||||
'$jotnets' => $jotnets,
|
||||
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
|
||||
'$lockstate' => $lockstate,
|
||||
'$acl' => '', // populate_acl((($group) ? $group_acl : $a->user), $celeb),
|
||||
'$bang' => (($group) ? '!' : ''),
|
||||
'$profile_uid' => $_SESSION['uid']
|
||||
));
|
||||
|
||||
|
||||
return $o;
|
||||
|
||||
}
|
||||
|
||||
|
||||
204
mod/follow.php
204
mod/follow.php
@@ -11,178 +11,56 @@ function follow_post(&$a) {
|
||||
}
|
||||
|
||||
$url = $orig_url = notags(trim($_POST['url']));
|
||||
|
||||
$email_conversant = false;
|
||||
|
||||
if($url) {
|
||||
$links = @lrdd($url);
|
||||
if(count($links)) {
|
||||
foreach($links as $link) {
|
||||
if($link['@attributes']['rel'] === NAMESPACE_DFRN)
|
||||
$dfrn = unamp($link['@attributes']['href']);
|
||||
if($link['@attributes']['rel'] === 'salmon')
|
||||
$notify = unamp($link['@attributes']['href']);
|
||||
if($link['@attributes']['rel'] === NAMESPACE_FEED)
|
||||
$poll = unamp($link['@attributes']['href']);
|
||||
if($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard')
|
||||
$hcard = unamp($link['@attributes']['href']);
|
||||
if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page')
|
||||
$profile = unamp($link['@attributes']['href']);
|
||||
// remove ajax junk
|
||||
|
||||
}
|
||||
$url = str_replace('/#!/','/',$url);
|
||||
|
||||
// Status.Net can have more than one profile URL. We need to match the profile URL
|
||||
// to a contact on incoming messages to prevent spam, and we won't know which one
|
||||
// to match. So in case of two, one of them is stored as an alias. Only store URL's
|
||||
// and not webfinger user@host aliases. If they've got more than two non-email style
|
||||
// aliases, let's hope we're lucky and get one that matches the feed author-uri because
|
||||
// otherwise we're screwed.
|
||||
if(! allowed_url($url)) {
|
||||
notice( t('Disallowed profile URL.') . EOL);
|
||||
goaway($_SESSION['return_url']);
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
foreach($links as $link) {
|
||||
if($link['@attributes']['rel'] === 'alias') {
|
||||
if(strpos($link['@attributes']['href'],'@') === false) {
|
||||
if(isset($profile)) {
|
||||
if($link['@attributes']['href'] !== $profile)
|
||||
$alias = unamp($link['@attributes']['href']);
|
||||
}
|
||||
else
|
||||
$profile = unamp($link['@attributes']['href']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if((strpos($orig_url,'@')) && validate_email($orig_url)) {
|
||||
$email_conversant = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If we find a DFRN site, send our subscriber to the other person's
|
||||
// dfrn_request page and all the other details will get sorted.
|
||||
$ret = probe_url($url);
|
||||
|
||||
if(strlen($dfrn)) {
|
||||
$ret = scrape_dfrn($dfrn);
|
||||
if(is_array($ret) && x($ret,'dfrn-request')) {
|
||||
if(strlen($a->path))
|
||||
$myaddr = bin2hex($a->get_baseurl() . '/profile/' . $a->user['nickname']);
|
||||
else
|
||||
$myaddr = bin2hex($a->user['nickname'] . '@' . $a->get_hostname());
|
||||
|
||||
if($ret['network'] === NETWORK_DFRN) {
|
||||
if(strlen($a->path))
|
||||
$myaddr = bin2hex($a->get_baseurl() . '/profile/' . $a->user['nickname']);
|
||||
else
|
||||
$myaddr = bin2hex($a->user['nickname'] . '@' . $a->get_hostname());
|
||||
|
||||
goaway($ret['dfrn-request'] . "&addr=$myaddr");
|
||||
goaway($ret['request'] . "&addr=$myaddr");
|
||||
|
||||
// NOTREACHED
|
||||
}
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
$network = 'stat';
|
||||
$priority = 0;
|
||||
|
||||
if($hcard) {
|
||||
$vcard = scrape_vcard($hcard);
|
||||
|
||||
// Google doesn't use absolute url in profile photos
|
||||
|
||||
if((x($vcard,'photo')) && substr($vcard['photo'],0,1) == '/') {
|
||||
$h = @parse_url($hcard);
|
||||
if($h)
|
||||
$vcard['photo'] = $h['scheme'] . '://' . $h['host'] . $vcard['photo'];
|
||||
}
|
||||
}
|
||||
|
||||
if(! $profile)
|
||||
$profile = $url;
|
||||
|
||||
|
||||
if(! x($vcard,'fn'))
|
||||
if(x($vcard,'nick'))
|
||||
$vcard['fn'] = $vcard['nick'];
|
||||
|
||||
if((! isset($vcard)) && (! $poll)) {
|
||||
|
||||
$ret = scrape_feed($url);
|
||||
|
||||
if(count($ret) && ($ret['feed_atom'] || $ret['feed_rss'])) {
|
||||
$poll = ((x($ret,'feed_atom')) ? unamp($ret['feed_atom']) : unamp($ret['feed_rss']));
|
||||
$vcard = array();
|
||||
require_once('simplepie/simplepie.inc');
|
||||
$feed = new SimplePie();
|
||||
$xml = fetch_url($poll);
|
||||
|
||||
$feed->set_raw_data($xml);
|
||||
|
||||
$feed->init();
|
||||
|
||||
$vcard['photo'] = $feed->get_image_url();
|
||||
$author = $feed->get_author();
|
||||
if($author) {
|
||||
$vcard['fn'] = unxmlify(trim($author->get_name()));
|
||||
if(! $vcard['fn'])
|
||||
$vcard['fn'] = trim(unxmlify($author->get_email()));
|
||||
if(strpos($vcard['fn'],'@') !== false)
|
||||
$vcard['fn'] = substr($vcard['fn'],0,strpos($vcard['fn'],'@'));
|
||||
$vcard['nick'] = strtolower(notags(unxmlify($vcard['fn'])));
|
||||
if(strpos($vcard['nick'],' '))
|
||||
$vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
|
||||
$email = unxmlify($author->get_email());
|
||||
}
|
||||
else {
|
||||
$item = $feed->get_item(0);
|
||||
if($item) {
|
||||
$author = $item->get_author();
|
||||
if($author) {
|
||||
$vcard['fn'] = trim(unxmlify($author->get_name()));
|
||||
if(! $vcard['fn'])
|
||||
$vcard['fn'] = trim(unxmlify($author->get_email()));
|
||||
if(strpos($vcard['fn'],'@') !== false)
|
||||
$vcard['fn'] = substr($vcard['fn'],0,strpos($vcard['fn'],'@'));
|
||||
$vcard['nick'] = strtolower(unxmlify($vcard['fn']));
|
||||
if(strpos($vcard['nick'],' '))
|
||||
$vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
|
||||
$email = unxmlify($author->get_email());
|
||||
}
|
||||
if(! $vcard['photo']) {
|
||||
$rawmedia = $item->get_item_tags('http://search.yahoo.com/mrss/','thumbnail');
|
||||
if($rawmedia && $rawmedia[0]['attribs']['']['url'])
|
||||
$vcard['photo'] = unxmlify($rawmedia[0]['attribs']['']['url']);
|
||||
}
|
||||
}
|
||||
}
|
||||
if((! $vcard['photo']) && strlen($email))
|
||||
$vcard['photo'] = gravatar_img($email);
|
||||
|
||||
$network = 'feed';
|
||||
$priority = 2;
|
||||
}
|
||||
}
|
||||
|
||||
logger('follow: poll=' . $poll . ' notify=' . $notify . ' profile=' . $profile . ' vcard=' . print_r($vcard,true));
|
||||
|
||||
$vcard['fn'] = notags($vcard['fn']);
|
||||
$vcard['nick'] = notags($vcard['nick']);
|
||||
|
||||
// do we have enough information?
|
||||
|
||||
if(! ((x($vcard['fn'])) && ($poll) && ($profile))) {
|
||||
if(! ((x($ret,'name')) && (x($ret,'poll')) && ((x($ret,'url')) || (x($ret,'addr'))))) {
|
||||
notice( t('The profile address specified does not provide adequate information.') . EOL);
|
||||
goaway($_SESSION['return_url']);
|
||||
}
|
||||
|
||||
|
||||
if(! $notify) {
|
||||
if(! $ret['notify']) {
|
||||
notice( t('Limited profile. This person will be unable to receive direct/personal notifications from you.') . EOL);
|
||||
}
|
||||
|
||||
if(! x($vcard,'photo'))
|
||||
$vcard['photo'] = $a->get_baseurl() . '/images/default-profile.jpg' ;
|
||||
|
||||
$writeable = ((($ret['network'] === NETWORK_OSTATUS) && ($ret['notify'])) ? 1 : 0);
|
||||
if($ret['network'] === NETWORK_MAIL) {
|
||||
$writeable = 1;
|
||||
|
||||
}
|
||||
// check if we already have a contact
|
||||
// the poll url is more reliable than the profile url, as we may have
|
||||
// indirect links or webfinger links
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `poll` = '%s' LIMIT 1",
|
||||
intval(local_user()),
|
||||
dbesc($poll)
|
||||
dbesc($ret['poll'])
|
||||
);
|
||||
|
||||
if(count($r)) {
|
||||
@@ -197,26 +75,28 @@ function follow_post(&$a) {
|
||||
}
|
||||
else {
|
||||
// create contact record
|
||||
$r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `alias`, `notify`, `poll`, `name`, `nick`, `photo`, `network`, `rel`, `priority`,
|
||||
`blocked`, `readonly`, `pending` )
|
||||
VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 0, 0, 0 ) ",
|
||||
$r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `addr`, `alias`, `notify`, `poll`, `name`, `nick`, `photo`, `network`, `rel`, `priority`,
|
||||
`writable`, `blocked`, `readonly`, `pending` )
|
||||
VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ",
|
||||
intval(local_user()),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc($profile),
|
||||
dbesc($alias),
|
||||
dbesc($notify),
|
||||
dbesc($poll),
|
||||
dbesc($vcard['fn']),
|
||||
dbesc($vcard['nick']),
|
||||
dbesc($vcard['photo']),
|
||||
dbesc($network),
|
||||
intval(REL_FAN),
|
||||
intval($priority)
|
||||
dbesc($ret['url']),
|
||||
dbesc($ret['addr']),
|
||||
dbesc($ret['alias']),
|
||||
dbesc($ret['notify']),
|
||||
dbesc($ret['poll']),
|
||||
dbesc($ret['name']),
|
||||
dbesc($ret['nick']),
|
||||
dbesc($ret['photo']),
|
||||
dbesc($ret['network']),
|
||||
intval(($ret['network'] === NETWORK_MAIL) ? REL_BUD : REL_FAN),
|
||||
intval($ret['priority']),
|
||||
intval($writeable)
|
||||
);
|
||||
}
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1",
|
||||
dbesc($profile),
|
||||
dbesc($ret['url']),
|
||||
intval(local_user())
|
||||
);
|
||||
|
||||
@@ -231,7 +111,7 @@ function follow_post(&$a) {
|
||||
|
||||
require_once("Photo.php");
|
||||
|
||||
$photos = import_profile_photo($vcard['photo'],local_user(),$contact_id);
|
||||
$photos = import_profile_photo($ret['photo'],local_user(),$contact_id);
|
||||
|
||||
$r = q("UPDATE `contact` SET `photo` = '%s',
|
||||
`thumb` = '%s',
|
||||
@@ -257,7 +137,7 @@ function follow_post(&$a) {
|
||||
|
||||
// create a follow slap
|
||||
|
||||
$tpl = load_view_file('view/follow_slap.tpl');
|
||||
$tpl = get_markup_template('follow_slap.tpl');
|
||||
$slap = replace_macros($tpl, array(
|
||||
'$name' => $a->user['username'],
|
||||
'$profile_page' => $a->get_baseurl() . '/profile/' . $a->user['nickname'],
|
||||
|
||||
68
mod/friendika.php
Normal file
68
mod/friendika.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
function friendika_init(&$a) {
|
||||
if ($a->argv[1]=="json"){
|
||||
$register_policy = Array('REGISTER_CLOSED', 'REGISTER_APPROVE', 'REGISTER_OPEN');
|
||||
|
||||
if (isset($a->config['admin_email']) && $a->config['admin_email']!=''){
|
||||
$r = q("SELECT username, nickname FROM user WHERE email='%s'", $a->config['admin_email']);
|
||||
$admin = array(
|
||||
'name' => $r[0]['username'],
|
||||
'profile'=> $a->get_baseurl().'/profile/'.$r[0]['nickname'],
|
||||
);
|
||||
} else {
|
||||
$admin = false;
|
||||
}
|
||||
|
||||
$data = Array(
|
||||
'version' => FRIENDIKA_VERSION,
|
||||
'url' => $a->get_baseurl(),
|
||||
'plugins' => $a->plugins,
|
||||
'register_policy' => $register_policy[$a->config['register_policy']],
|
||||
'admin' => $admin,
|
||||
'site_name' => $a->config['sitename'],
|
||||
|
||||
);
|
||||
|
||||
echo str_replace('\\/','/',json_encode($data));
|
||||
killme();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function friendika_content(&$a) {
|
||||
|
||||
$o = '';
|
||||
$o .= '<h3>Friendika</h3>';
|
||||
|
||||
|
||||
$o .= '<p></p><p>';
|
||||
|
||||
$o .= 'View <a href="LICENSE">License</a>' . '<br /><br />';
|
||||
$o .= t('This is Friendika version') . ' ' . FRIENDIKA_VERSION . ' ';
|
||||
$o .= t('running at web location') . ' ' . $a->get_baseurl() . '</p><p>';
|
||||
|
||||
$o .= t('Shared content within the Friendika network is provided under the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 license</a>') . '</p><p>';
|
||||
|
||||
$o .= t('Please visit <a href="http://project.friendika.com">Project.Friendika.com</a> to learn more about the Friendika project.') . '</p><p>';
|
||||
|
||||
$o .= t('Bug reports and issues: please visit') . ' ' . '<a href="http://bugs.friendika.com">Bugs.Friendika.com</a></p><p>';
|
||||
$o .= t('Suggestions, praise, donations, etc. - please email "Info" at Friendika - dot com') . '</p>';
|
||||
|
||||
$o .= '<p></p>';
|
||||
|
||||
if(count($a->plugins)) {
|
||||
$o .= '<p>' . t('Installed plugins/addons/apps') . '</p>';
|
||||
$o .= '<ul>';
|
||||
foreach($a->plugins as $p)
|
||||
if(strlen($p))
|
||||
$o .= '<li>' . $p . '</li>';
|
||||
$o .= '</ul>';
|
||||
}
|
||||
else
|
||||
$o .= '<p>' . t('No installed plugins/addons/apps');
|
||||
|
||||
return $o;
|
||||
|
||||
}
|
||||
127
mod/group.php
127
mod/group.php
@@ -55,28 +55,7 @@ function group_post(&$a) {
|
||||
if($r)
|
||||
notice( t('Group name changed.') . EOL );
|
||||
}
|
||||
$members = $_POST['group_members_select'];
|
||||
if(is_array($members))
|
||||
array_walk($members,'validate_members');
|
||||
$r = q("DELETE FROM `group_member` WHERE `gid` = %d AND `uid` = %d",
|
||||
intval($a->argv[1]),
|
||||
intval(local_user())
|
||||
);
|
||||
$result = true;
|
||||
if(is_array($members) && count($members)) {
|
||||
foreach($members as $member) {
|
||||
$r = q("INSERT INTO `group_member` ( `uid`, `gid`, `contact-id`)
|
||||
VALUES ( %d, %d, %d )",
|
||||
intval(local_user()),
|
||||
intval($group['id']),
|
||||
intval($member)
|
||||
);
|
||||
if(! $r)
|
||||
$result = false;
|
||||
}
|
||||
}
|
||||
if($result)
|
||||
notice( t('Membership list updated.') . EOL);
|
||||
|
||||
$a->page['aside'] = group_side();
|
||||
}
|
||||
return;
|
||||
@@ -90,8 +69,12 @@ function group_content(&$a) {
|
||||
}
|
||||
|
||||
if(($a->argc == 2) && ($a->argv[1] === 'new')) {
|
||||
$tpl = load_view_file('view/group_new.tpl');
|
||||
$o .= replace_macros($tpl,array());
|
||||
$tpl = get_markup_template('group_new.tpl');
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$desc' => t('Create a group of contacts/friends.'),
|
||||
'$name' => t('Group Name: '),
|
||||
'$submit' => t('Submit')
|
||||
));
|
||||
return $o;
|
||||
}
|
||||
|
||||
@@ -109,13 +92,22 @@ function group_content(&$a) {
|
||||
notice( t('Unable to remove group.') . EOL);
|
||||
}
|
||||
goaway($a->get_baseurl() . '/group');
|
||||
return; // NOTREACHED
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
if(($a->argc > 2) && intval($a->argv[1]) && intval($a->argv[2])) {
|
||||
$r = q("SELECT `id` FROM `contact` WHERE `id` = %d AND `uid` = %d and `self` = 0 and `blocked` = 0 AND `pending` = 0 LIMIT 1",
|
||||
intval($a->argv[2]),
|
||||
intval(local_user())
|
||||
);
|
||||
if(count($r))
|
||||
$change = intval($a->argv[2]);
|
||||
}
|
||||
|
||||
if(($a->argc > 1) && (intval($a->argv[1]))) {
|
||||
|
||||
if(($a->argc == 2) && (intval($a->argv[1]))) {
|
||||
require_once('include/acl_selectors.php');
|
||||
$r = q("SELECT * FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
$r = q("SELECT * FROM `group` WHERE `id` = %d AND `uid` = %d AND `deleted` = 0 LIMIT 1",
|
||||
intval($a->argv[1]),
|
||||
intval(local_user())
|
||||
);
|
||||
@@ -124,14 +116,31 @@ function group_content(&$a) {
|
||||
goaway($a->get_baseurl() . '/contacts');
|
||||
}
|
||||
$group = $r[0];
|
||||
$ret = group_get_members($group['id']);
|
||||
$members = group_get_members($group['id']);
|
||||
$preselected = array();
|
||||
if(count($ret)) {
|
||||
foreach($ret as $p)
|
||||
$preselected[] = $p['id'];
|
||||
if(count($members)) {
|
||||
foreach($members as $member)
|
||||
$preselected[] = $member['id'];
|
||||
}
|
||||
|
||||
$drop_tpl = load_view_file('view/group_drop.tpl');
|
||||
if($change) {
|
||||
if(in_array($change,$preselected)) {
|
||||
group_rmv_member(local_user(),$group['name'],$change);
|
||||
}
|
||||
else {
|
||||
group_add_member(local_user(),$group['name'],$change);
|
||||
}
|
||||
|
||||
$members = group_get_members($group['id']);
|
||||
$preselected = array();
|
||||
if(count($members)) {
|
||||
foreach($members as $member)
|
||||
$preselected[] = $member['id'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$drop_tpl = get_markup_template('group_drop.tpl');
|
||||
$drop_txt = replace_macros($drop_tpl, array(
|
||||
'$id' => $group['id'],
|
||||
'$delete' => t('Delete')
|
||||
@@ -139,15 +148,63 @@ function group_content(&$a) {
|
||||
|
||||
$celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
|
||||
|
||||
$tpl = load_view_file('view/group_edit.tpl');
|
||||
$tpl = get_markup_template('group_edit.tpl');
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$gid' => $group['id'],
|
||||
'$name' => $group['name'],
|
||||
'$drop' => $drop_txt,
|
||||
'$selector' => contact_select('group_members_select','group_members_select',$preselected,25,false,$celeb)
|
||||
'$desc' => t('Click on a contact to add or remove.'),
|
||||
'$title' => t('Group Editor'),
|
||||
'$gname' => t('Group Name: '),
|
||||
'$submit' => t('Submit')
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
if(! isset($group))
|
||||
return;
|
||||
|
||||
$o .= '<div id="group-update-wrapper">';
|
||||
if($change)
|
||||
$o = '';
|
||||
|
||||
$o .= '<div id="group-members">';
|
||||
$o .= '<h3>' . t('Members') . '</h3>';
|
||||
foreach($members as $member) {
|
||||
if($member['url']) {
|
||||
$member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;';
|
||||
$o .= micropro($member,true,'mpgroup');
|
||||
}
|
||||
else
|
||||
group_rmv_member(local_user(),$group['name'],$member['id']);
|
||||
}
|
||||
|
||||
$o .= '</div><div id="group-members-end"></div>';
|
||||
$o .= '<hr id="group-separator" />';
|
||||
$o .= '<div id="group-all-contacts">';
|
||||
|
||||
$o .= '<h3>' . t('All Contacts') . '</h3>';
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0 ORDER BY `name` ASC",
|
||||
intval(local_user())
|
||||
);
|
||||
|
||||
if(count($r)) {
|
||||
foreach($r as $member) {
|
||||
if(! in_array($member['id'],$preselected)) {
|
||||
$member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;';
|
||||
$o .= micropro($member,true,'mpall');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$o .= '</div><div id="group-all-contacts-end"></div>';
|
||||
|
||||
if($change) {
|
||||
echo $o;
|
||||
killme();
|
||||
}
|
||||
$o .= '</div>';
|
||||
return $o;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
37
mod/help.php
Normal file
37
mod/help.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
if(! function_exists('load_doc_file')) {
|
||||
function load_doc_file($s) {
|
||||
global $lang;
|
||||
if(! isset($lang))
|
||||
$lang = 'en';
|
||||
$b = basename($s);
|
||||
$d = dirname($s);
|
||||
if(file_exists("$d/$lang/$b"))
|
||||
return file_get_contents("$d/$lang/$b");
|
||||
return file_get_contents($s);
|
||||
}}
|
||||
|
||||
|
||||
|
||||
function help_content(&$a) {
|
||||
|
||||
global $lang;
|
||||
|
||||
require_once('library/markdown.php');
|
||||
|
||||
$text = '';
|
||||
|
||||
if($a->argc > 1) {
|
||||
$text = load_doc_file('doc/' . $a->argv[1] . '.md');
|
||||
$a->page['title'] = t('Help:') . ' ' . str_replace('-',' ',notags($a->argv[1]));
|
||||
}
|
||||
if(! $text) {
|
||||
$text = load_doc_file('doc/Home.md');
|
||||
$a->page['title'] = t('Help');
|
||||
}
|
||||
|
||||
|
||||
return Markdown($text);
|
||||
|
||||
}
|
||||
@@ -20,7 +20,7 @@ function home_content(&$a) {
|
||||
if(x($_SESSION,'theme'))
|
||||
unset($_SESSION['theme']);
|
||||
|
||||
$o .= '<h1>' . ((x($a->config,'sitename')) ? t("Welcome to ").$a->config['sitename'] : "" ) . '</h1>';
|
||||
$o .= '<h1>' . ((x($a->config,'sitename')) ? sprintf( t("Welcome to %s") ,$a->config['sitename']) : "" ) . '</h1>';
|
||||
if(file_exists('home.html'))
|
||||
$o .= file_get_contents('home.html');
|
||||
|
||||
|
||||
@@ -14,17 +14,20 @@ function install_post(&$a) {
|
||||
$phpath = notags(trim($_POST['phpath']));
|
||||
|
||||
require_once("dba.php");
|
||||
|
||||
unset($db);
|
||||
$db = new dba($dbhost, $dbuser, $dbpass, $dbdata, true);
|
||||
|
||||
if(mysqli_connect_errno()) {
|
||||
unset($db);
|
||||
$db = new dba($dbhost, $dbuser, $dbpass, '', true);
|
||||
if(! mysqli_connect_errno()) {
|
||||
$r = q("CREATE DATABASE '%s'",
|
||||
dbesc($dbdata)
|
||||
);
|
||||
if($r)
|
||||
if($r) {
|
||||
unset($db);
|
||||
$db = new dba($dbhost, $dbuser, $dbpass, $dbdata, true);
|
||||
}
|
||||
}
|
||||
if(mysqli_connect_errno()) {
|
||||
notice( t('Could not create/connect to database.') . EOL);
|
||||
@@ -34,7 +37,7 @@ function install_post(&$a) {
|
||||
|
||||
notice( t('Connected to database.') . EOL);
|
||||
|
||||
$tpl = load_view_file('view/htconfig.tpl');
|
||||
$tpl = get_intltext_template('htconfig.tpl');
|
||||
$txt = replace_macros($tpl,array(
|
||||
'$dbhost' => $dbhost,
|
||||
'$dbuser' => $dbuser,
|
||||
@@ -50,36 +53,47 @@ function install_post(&$a) {
|
||||
}
|
||||
|
||||
$errors = load_database($db);
|
||||
if(! $errors) {
|
||||
// Our sessions normally are stored in the database. But as we have only managed
|
||||
// to get it bootstrapped milliseconds ago, we have to apply a bit of trickery so
|
||||
// that you'll see the following important notice (which is stored in the session).
|
||||
|
||||
session_write_close();
|
||||
if($errors)
|
||||
$a->data['db_failed'] = true;
|
||||
else
|
||||
$a->data['db_installed'] = true;
|
||||
|
||||
require_once('session.php');
|
||||
session_start();
|
||||
session_regenerate_id();
|
||||
|
||||
$_SESSION['sysmsg'] = '';
|
||||
|
||||
notice( t('Database import succeeded.') . EOL
|
||||
. t('IMPORTANT: You will need to [manually] setup a scheduled task for the poller.') . EOL
|
||||
. t('Please see the file "INSTALL.txt".') . EOL );
|
||||
goaway($a->get_baseurl() . '/register' );
|
||||
}
|
||||
else {
|
||||
$db = null; // start fresh
|
||||
notice( t('Database import failed.') . EOL
|
||||
. t('You may need to import the file "database.sql" manually using phpmyadmin or mysql.') . EOL
|
||||
. t('Please see the file "INSTALL.txt".') . EOL );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
function install_content(&$a) {
|
||||
|
||||
global $db;
|
||||
$o = '';
|
||||
|
||||
if(x($a->data,'db_installed')) {
|
||||
$o .= '<h2>' . t('Proceed with Installation') . '</h2>';
|
||||
$o .= '<p style="font-size: 130%;">';
|
||||
$o .= t('Your Friendika site database has been installed.') . EOL;
|
||||
$o .= t('IMPORTANT: You will need to [manually] setup a scheduled task for the poller.') . EOL ;
|
||||
$o .= t('Please see the file "INSTALL.txt".') . EOL ;
|
||||
$o .= '<br />';
|
||||
$o .= '<a href="' . $a->get_baseurl() . '/register' . '">' . t('Proceed to registration') . '</a>' ;
|
||||
$o .= '</p>';
|
||||
return $o;
|
||||
}
|
||||
|
||||
if(x($a->data,'db_failed')) {
|
||||
$o .= t('Database import failed.') . EOL;
|
||||
$o .= t('You may need to import the file "database.sql" manually using phpmyadmin or mysql.') . EOL;
|
||||
$o .= t('Please see the file "INSTALL.txt".') . EOL ;
|
||||
return $o;
|
||||
}
|
||||
|
||||
if($db && $db->connected) {
|
||||
$r = q("SELECT COUNT(*) as `total` FROM `user`");
|
||||
if($r && count($r) && $r[0]['total']) {
|
||||
notice( t('Permission denied.') . EOL);
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
notice( t('Welcome to Friendika.') . EOL);
|
||||
|
||||
@@ -102,8 +116,18 @@ function install_content(&$a) {
|
||||
|
||||
require_once('datetime.php');
|
||||
|
||||
$tpl = load_view_file('view/install_db.tpl');
|
||||
$tpl = get_markup_template('install_db.tpl');
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$lbl_01' => t('Friendika Social Network'),
|
||||
'$lbl_02' => t('Installation'),
|
||||
'$lbl_03' => t('In order to install Friendika we need to know how to contact your database.'),
|
||||
'$lbl_04' => t('Please contact your hosting provider or site administrator if you have questions about these settings.'),
|
||||
'$lbl_05' => t('The database you specify below must already exist. If it does not, please create it before continuing.'),
|
||||
'$lbl_06' => t('Database Server Name'),
|
||||
'$lbl_07' => t('Database Login Name'),
|
||||
'$lbl_08' => t('Database Login Password'),
|
||||
'$lbl_09' => t('Database Name'),
|
||||
'$lbl_10' => t('Please select a default timezone for your website'),
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$tzselect' => ((x($_POST,'timezone')) ? select_timezone($_POST['timezone']) : select_timezone()),
|
||||
'$submit' => t('Submit'),
|
||||
|
||||
@@ -25,21 +25,25 @@ function invite_post(&$a) {
|
||||
$recip = trim($recip);
|
||||
|
||||
if(! valid_email($recip)) {
|
||||
notice( $recip . t(' : ') . t('Not a valid email address.') . EOL);
|
||||
notice( sprintf( t('%s : Not a valid email address.'), $recip) . EOL);
|
||||
continue;
|
||||
}
|
||||
|
||||
$res = mail($recip, t('Please join my network on ') . $a->config['sitename'],
|
||||
$message, "From: " . $a->user['email']);
|
||||
$res = mail($recip, sprintf(t('Please join my network on %s'), $a->config['sitename']),
|
||||
$message,
|
||||
"From: " . $a->user['email'] . "\n"
|
||||
. 'Content-type: text/plain; charset=UTF-8' . "\n"
|
||||
. 'Content-transfer-encoding: 8bit' );
|
||||
|
||||
if($res) {
|
||||
$total ++;
|
||||
}
|
||||
else {
|
||||
notice( $recip . t(' : ') . t('Message delivery failed.') . EOL);
|
||||
notice( sprintf( t('%s : Message delivery failed.'), $recip) . EOL);
|
||||
}
|
||||
|
||||
}
|
||||
notice( $total . t(' messages sent.') . EOL);
|
||||
notice( sprintf( tt("%d message sent.", "%d messages sent.", $total) , $total) . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -51,13 +55,13 @@ function invite_content(&$a) {
|
||||
return;
|
||||
}
|
||||
|
||||
$tpl = load_view_file('view/invite.tpl');
|
||||
$tpl = get_markup_template('invite.tpl');
|
||||
|
||||
$o = replace_macros($tpl, array(
|
||||
'$invite' => t('Send invitations'),
|
||||
'$addr_text' => t('Enter email addresses, one per line:'),
|
||||
'$msg_text' => t('Your message:'),
|
||||
'$default_message' => t('Please join my social network on ') . $a->config['sitename'] . "\r\n" . "\r\n"
|
||||
'$default_message' => sprintf(t('Please join my social network on %s'), $a->config['sitename']) . "\r\n" . "\r\n"
|
||||
. t('To accept this invitation, please visit:') . "\r\n" . "\r\n" . $a->get_baseurl()
|
||||
. "\r\n" . "\r\n" . t('Once you have registered, please connect with me via my profile page at:')
|
||||
. "\r\n" . "\r\n" . $a->get_baseurl() . '/profile/' . $a->user['nickname'] ,
|
||||
|
||||
181
mod/item.php
181
mod/item.php
@@ -51,7 +51,7 @@ function item_post(&$a) {
|
||||
}
|
||||
|
||||
$profile_uid = ((x($_POST,'profile_uid')) ? intval($_POST['profile_uid']) : 0);
|
||||
|
||||
$post_id = ((x($_POST['post_id'])) ? intval($_POST['post_id']) : 0);
|
||||
|
||||
if(! can_write_wall($a,$profile_uid)) {
|
||||
notice( t('Permission denied.') . EOL) ;
|
||||
@@ -60,6 +60,21 @@ function item_post(&$a) {
|
||||
killme();
|
||||
}
|
||||
|
||||
|
||||
// is this an edited post?
|
||||
|
||||
$orig_post = null;
|
||||
|
||||
if($post_id) {
|
||||
$i = q("SELECT * FROM `item` WHERE `uid` = %d AND `id` = %d LIMIT 1",
|
||||
intval($profile_uid),
|
||||
intval($post_id)
|
||||
);
|
||||
if(! count($i))
|
||||
killme();
|
||||
$orig_post = $i[0];
|
||||
}
|
||||
|
||||
$user = null;
|
||||
|
||||
$r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
|
||||
@@ -68,37 +83,53 @@ function item_post(&$a) {
|
||||
if(count($r))
|
||||
$user = $r[0];
|
||||
|
||||
if($orig_post) {
|
||||
$str_group_allow = $orig_post['allow_gid'];
|
||||
$str_contact_allow = $orig_post['allow_cid'];
|
||||
$str_group_deny = $orig_post['deny_gid'];
|
||||
$str_contact_deny = $orig_post['deny_cid'];
|
||||
$title = $orig_post['title'];
|
||||
$location = $orig_post['location'];
|
||||
$coord = $orig_post['coord'];
|
||||
$verb = $orig_post['verb'];
|
||||
$emailcc = $orig_post['emailcc'];
|
||||
|
||||
$str_group_allow = perms2str($_POST['group_allow']);
|
||||
$str_contact_allow = perms2str($_POST['contact_allow']);
|
||||
$str_group_deny = perms2str($_POST['group_deny']);
|
||||
$str_contact_deny = perms2str($_POST['contact_deny']);
|
||||
|
||||
$private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0);
|
||||
|
||||
if(($parent_item) &&
|
||||
(($parent_item['private'])
|
||||
|| strlen($parent_item['allow_cid'])
|
||||
|| strlen($parent_item['allow_gid'])
|
||||
|| strlen($parent_item['deny_cid'])
|
||||
|| strlen($parent_item['deny_gid'])
|
||||
)
|
||||
) {
|
||||
$private = 1;
|
||||
$body = escape_tags(trim($_POST['body']));
|
||||
$private = $orig_post['private'];
|
||||
$pubmail_enable = $orig_post['pubmail'];
|
||||
}
|
||||
else {
|
||||
$str_group_allow = perms2str($_POST['group_allow']);
|
||||
$str_contact_allow = perms2str($_POST['contact_allow']);
|
||||
$str_group_deny = perms2str($_POST['group_deny']);
|
||||
$str_contact_deny = perms2str($_POST['contact_deny']);
|
||||
$title = notags(trim($_POST['title']));
|
||||
$location = notags(trim($_POST['location']));
|
||||
$coord = notags(trim($_POST['coord']));
|
||||
$verb = notags(trim($_POST['verb']));
|
||||
$emailcc = notags(trim($_POST['emailcc']));
|
||||
|
||||
$title = notags(trim($_POST['title']));
|
||||
$body = escape_tags(trim($_POST['body']));
|
||||
$location = notags(trim($_POST['location']));
|
||||
$coord = notags(trim($_POST['coord']));
|
||||
$verb = notags(trim($_POST['verb']));
|
||||
$emailcc = notags(trim($_POST['emailcc']));
|
||||
$body = escape_tags(trim($_POST['body']));
|
||||
$private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0);
|
||||
|
||||
if(! strlen($body)) {
|
||||
notice( t('Empty post discarded.') . EOL );
|
||||
if(x($_POST,'return'))
|
||||
goaway($a->get_baseurl() . "/" . $_POST['return'] );
|
||||
killme();
|
||||
if(($parent_item) &&
|
||||
(($parent_item['private'])
|
||||
|| strlen($parent_item['allow_cid'])
|
||||
|| strlen($parent_item['allow_gid'])
|
||||
|| strlen($parent_item['deny_cid'])
|
||||
|| strlen($parent_item['deny_gid'])
|
||||
)) {
|
||||
$private = 1;
|
||||
}
|
||||
|
||||
$pubmail_enable = ((x($_POST,'pubmail_enable') && intval($_POST['pubmail_enable']) && (! $private)) ? 1 : 0);
|
||||
|
||||
if(! strlen($body)) {
|
||||
notice( t('Empty post discarded.') . EOL );
|
||||
if(x($_POST,'return'))
|
||||
goaway($a->get_baseurl() . "/" . $_POST['return'] );
|
||||
killme();
|
||||
}
|
||||
}
|
||||
|
||||
// get contact info for poster
|
||||
@@ -151,7 +182,6 @@ function item_post(&$a) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* When a photo was uploaded into the message using the (profile wall) ajax
|
||||
@@ -212,6 +242,8 @@ function item_post(&$a) {
|
||||
if(count($tags)) {
|
||||
foreach($tags as $tag) {
|
||||
if(strpos($tag,'#') === 0) {
|
||||
if(strpos($tag,'[url='))
|
||||
continue;
|
||||
$basetag = str_replace('_',' ',substr($tag,1));
|
||||
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
|
||||
if(strlen($str_tags))
|
||||
@@ -220,6 +252,8 @@ function item_post(&$a) {
|
||||
continue;
|
||||
}
|
||||
if(strpos($tag,'@') === 0) {
|
||||
if(strpos($tag,'[url='))
|
||||
continue;
|
||||
$stat = false;
|
||||
$name = substr($tag,1);
|
||||
if((strpos($name,'@')) || (strpos($name,'http://'))) {
|
||||
@@ -283,15 +317,13 @@ function item_post(&$a) {
|
||||
$str_tags .= ',';
|
||||
$str_tags .= '@[url=' . $alias . ']' . $newname . '[/url]';
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
$wall = 0;
|
||||
|
||||
if($post_type === 'wall' || $post_type === 'wall-comment')
|
||||
$wall = 1;
|
||||
|
||||
@@ -332,6 +364,7 @@ function item_post(&$a) {
|
||||
$datarray['deny_cid'] = $str_contact_deny;
|
||||
$datarray['deny_gid'] = $str_group_deny;
|
||||
$datarray['private'] = $private;
|
||||
$datarray['pubmail'] = $pubmail_enable;
|
||||
|
||||
/**
|
||||
* These fields are for the convenience of plugins...
|
||||
@@ -342,13 +375,35 @@ function item_post(&$a) {
|
||||
$datarray['parent'] = $parent;
|
||||
$datarray['self'] = $self;
|
||||
|
||||
if($orig_post)
|
||||
$datarray['edit'] = true;
|
||||
|
||||
call_hooks('post_local',$datarray);
|
||||
|
||||
|
||||
if($orig_post) {
|
||||
$r = q("UPDATE `item` SET `body` = '%s', `edited` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
dbesc($body),
|
||||
dbesc(datetime_convert()),
|
||||
intval($post_id),
|
||||
intval($profile_uid)
|
||||
);
|
||||
|
||||
proc_run('php', "include/notifier.php", 'edit_post', "$post_id");
|
||||
if((x($_POST,'return')) && strlen($_POST['return'])) {
|
||||
logger('return: ' . $_POST['return']);
|
||||
goaway($a->get_baseurl() . "/" . $_POST['return'] );
|
||||
}
|
||||
killme();
|
||||
}
|
||||
else
|
||||
$post_id = 0;
|
||||
|
||||
|
||||
$r = q("INSERT INTO `item` (`uid`,`type`,`wall`,`gravity`,`contact-id`,`owner-name`,`owner-link`,`owner-avatar`,
|
||||
`author-name`, `author-link`, `author-avatar`, `created`, `edited`, `changed`, `uri`, `title`, `body`, `location`, `coord`,
|
||||
`tag`, `inform`, `verb`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private` )
|
||||
VALUES( %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d )",
|
||||
`tag`, `inform`, `verb`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail` )
|
||||
VALUES( %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
|
||||
intval($datarray['uid']),
|
||||
dbesc($datarray['type']),
|
||||
intval($datarray['wall']),
|
||||
@@ -375,7 +430,8 @@ function item_post(&$a) {
|
||||
dbesc($datarray['allow_gid']),
|
||||
dbesc($datarray['deny_cid']),
|
||||
dbesc($datarray['deny_gid']),
|
||||
intval($datarray['private'])
|
||||
intval($datarray['private']),
|
||||
intval($datarray['pubmail'])
|
||||
);
|
||||
|
||||
$r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' LIMIT 1",
|
||||
@@ -408,21 +464,7 @@ function item_post(&$a) {
|
||||
if(($user['notify-flags'] & NOTIFY_COMMENT) && ($contact_record != $author)) {
|
||||
require_once('bbcode.php');
|
||||
$from = $author['name'];
|
||||
/*
|
||||
$tpl = load_view_file('view/cmnt_received_eml.tpl');
|
||||
$email_tpl = replace_macros($tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
'$username' => $user['username'],
|
||||
'$email' => $user['email'],
|
||||
'$from' => $from,
|
||||
'$display' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id,
|
||||
'$body' => strip_tags(bbcode($datarray['body']))
|
||||
));
|
||||
|
||||
$res = mail($user['email'], $from . t(" commented on your item at ") . $a->config['sitename'],
|
||||
$email_tpl,t("From: Administrator@") . $a->get_hostname() );
|
||||
*/
|
||||
// name of the automated email sender
|
||||
$msg['notificationfromname'] = stripslashes($datarray['author-name']);;
|
||||
// noreply address to send from
|
||||
@@ -439,7 +481,7 @@ function item_post(&$a) {
|
||||
= html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r","\\n\\n" ,"\\n"), "<br />\n",$datarray['body']))));
|
||||
|
||||
// load the template for private message notifications
|
||||
$tpl = load_view_file('view/cmnt_received_html_body_eml.tpl');
|
||||
$tpl = get_intltext_template('cmnt_received_html_body_eml.tpl');
|
||||
$email_html_body_tpl = replace_macros($tpl,array(
|
||||
'$sitename' => $a->config['sitename'], // name of this site
|
||||
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
|
||||
@@ -452,7 +494,7 @@ function item_post(&$a) {
|
||||
));
|
||||
|
||||
// load the template for private message notifications
|
||||
$tpl = load_view_file('view/cmnt_received_text_body_eml.tpl');
|
||||
$tpl = get_intltext_template('cmnt_received_text_body_eml.tpl');
|
||||
$email_text_body_tpl = replace_macros($tpl,array(
|
||||
'$sitename' => $a->config['sitename'], // name of this site
|
||||
'$siteurl' => $a->get_baseurl(), // descriptive url of this site
|
||||
@@ -485,22 +527,6 @@ function item_post(&$a) {
|
||||
if(($user['notify-flags'] & NOTIFY_WALL) && ($contact_record != $author)) {
|
||||
require_once('bbcode.php');
|
||||
$from = $author['name'];
|
||||
/*
|
||||
$tpl = load_view_file('view/wall_received_eml.tpl');
|
||||
$email_tpl = replace_macros($tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
'$username' => $user['username'],
|
||||
'$email' => $user['email'],
|
||||
'$from' => $from,
|
||||
'$display' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id,
|
||||
'$body' => strip_tags(bbcode($datarray['body']))
|
||||
));
|
||||
|
||||
$res = mail($user['email'], $from . t(" posted on your profile wall at ") . $a->config['sitename'],
|
||||
$email_tpl,t("From: Administrator@") . $a->get_hostname() );
|
||||
*/
|
||||
|
||||
|
||||
// name of the automated email sender
|
||||
$msg['notificationfromname'] = $from;
|
||||
@@ -583,7 +609,8 @@ function item_post(&$a) {
|
||||
|
||||
proc_run('php', "include/notifier.php", $notify_type, "$post_id");
|
||||
|
||||
$datarray['id'] = $post_id;
|
||||
$datarray['id'] = $post_id;
|
||||
$datarray['plink'] = $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id;
|
||||
|
||||
call_hooks('post_local_end', $datarray);
|
||||
|
||||
@@ -594,13 +621,12 @@ function item_post(&$a) {
|
||||
$addr = trim($recip);
|
||||
if(! strlen($addr))
|
||||
continue;
|
||||
$disclaimer = '<hr />' . t('This message was sent to you by ') . $a->user['username']
|
||||
. t(', a member of the Friendika social network.') . '<br />';
|
||||
$disclaimer .= t('You may visit them online at') . ' '
|
||||
. $a->get_baseurl() . '/profile/' . $a->user['nickname'] . '<br />';
|
||||
$disclaimer .= t('Please contact the sender by replying to this post if you do not wish to receive these messages.') . '<br />';
|
||||
$disclaimer = '<hr />' . sprintf( t('This message was sent to you by %s, a member of the Friendika social network.'),$a->user['username'])
|
||||
. '<br />';
|
||||
$disclaimer .= sprintf( t('You may visit them online at %s'), $a->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;
|
||||
|
||||
$subject = '[Friendika]' . ' ' . $a->user['username'] . ' ' . t('posted an update.');
|
||||
$subject = '[Friendika]' . ' ' . sprintf( t('%s posted an update.'),$a->user['username']);
|
||||
$headers = 'From: ' . $a->user['username'] . ' <' . $a->user['email'] . '>' . "\n";
|
||||
$headers .= 'MIME-Version: 1.0' . "\n";
|
||||
$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
|
||||
@@ -640,7 +666,7 @@ function item_content(&$a) {
|
||||
|
||||
require_once('include/security.php');
|
||||
|
||||
$uid = $_SESSION['uid'];
|
||||
$uid = local_user();
|
||||
|
||||
if(($a->argc == 3) && ($a->argv[1] === 'drop') && intval($a->argv[2])) {
|
||||
|
||||
@@ -716,7 +742,8 @@ function item_content(&$a) {
|
||||
// send the notification upstream/downstream as the case may be
|
||||
|
||||
proc_run('php',"include/notifier.php","drop","$drop_id");
|
||||
|
||||
// We seem to lose the return url occasionally. Have not been able to reliably duplicate
|
||||
// logger('drop_return_url: ' . $_SESSION['return_url']);
|
||||
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
|
||||
//NOTREACHED
|
||||
}
|
||||
@@ -726,4 +753,4 @@ function item_content(&$a) {
|
||||
//NOTREACHED
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
16
mod/like.php
16
mod/like.php
@@ -124,9 +124,9 @@ function like_content(&$a) {
|
||||
</object>
|
||||
EOT;
|
||||
if($verb === 'like')
|
||||
$bodyverb = t('likes');
|
||||
$bodyverb = t('%1$s likes %2$s\'s %3$s');
|
||||
if($verb === 'dislike')
|
||||
$bodyverb = t('doesn\'t like');
|
||||
$bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s');
|
||||
|
||||
if(! isset($bodyverb))
|
||||
return;
|
||||
@@ -147,9 +147,11 @@ EOT;
|
||||
$arr['author-name'] = $contact['name'];
|
||||
$arr['author-link'] = $contact['url'];
|
||||
$arr['author-avatar'] = $contact['thumb'];
|
||||
$arr['body'] = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]' . ' ' . $bodyverb . ' '
|
||||
. '[url=' . $item['author-link'] . ']' . $item['author-name'] . t('\'s') . '[/url]' . ' '
|
||||
. '[url=' . $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . ']' . $post_type . '[/url]' ;
|
||||
|
||||
$ulink = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
|
||||
$alink = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
|
||||
$plink = '[url=' . $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . ']' . $post_type . '[/url]';
|
||||
$arr['body'] = sprintf( $bodyverb, $ulink, $alink, $plink );
|
||||
|
||||
$arr['verb'] = $activity;
|
||||
$arr['object-type'] = $objtype;
|
||||
@@ -171,6 +173,10 @@ EOT;
|
||||
);
|
||||
}
|
||||
|
||||
$arr['id'] = $post_id;
|
||||
|
||||
call_hooks('post_local_end', $arr);
|
||||
|
||||
proc_run('php',"include/notifier.php","like","$post_id");
|
||||
|
||||
return; // NOTREACHED
|
||||
|
||||
@@ -24,9 +24,9 @@ function lostpass_post(&$a) {
|
||||
intval($uid)
|
||||
);
|
||||
if($r)
|
||||
notice("Password reset request issued. Check your email.");
|
||||
notice( t('Password reset request issued. Check your email.') . EOL);
|
||||
|
||||
$email_tpl = load_view_file("view/lostpass_eml.tpl");
|
||||
$email_tpl = get_intltext_template("lostpass_eml.tpl");
|
||||
$email_tpl = replace_macros($email_tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
@@ -35,8 +35,12 @@ function lostpass_post(&$a) {
|
||||
'$reset_link' => $a->get_baseurl() . '/lostpass?verify=' . $new_password
|
||||
));
|
||||
|
||||
$res = mail($email, t('Password reset requested at ') . $a->config['sitename'],
|
||||
$email_tpl, 'From: ' . t('Administrator') . '@' . $_SERVER[SERVER_NAME]);
|
||||
$res = mail($email, sprintf( t('Password reset requested at %s'),$a->config['sitename']),
|
||||
$email_tpl,
|
||||
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
|
||||
. 'Content-type: text/plain; charset=UTF-8' . "\n"
|
||||
. 'Content-transfer-encoding: 8bit' );
|
||||
|
||||
|
||||
goaway($a->get_baseurl());
|
||||
}
|
||||
@@ -53,7 +57,7 @@ function lostpass_content(&$a) {
|
||||
dbesc($hash)
|
||||
);
|
||||
if(! count($r)) {
|
||||
notice("Request could not be verified. (You may have previously submitted it.) Password reset failed." . EOL);
|
||||
notice( t("Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed.") . EOL);
|
||||
goaway($a->get_baseurl());
|
||||
return;
|
||||
}
|
||||
@@ -69,16 +73,23 @@ function lostpass_content(&$a) {
|
||||
intval($uid)
|
||||
);
|
||||
if($r) {
|
||||
$tpl = load_view_file('view/pwdreset.tpl');
|
||||
$tpl = get_markup_template('pwdreset.tpl');
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$lbl1' => t('Password Reset'),
|
||||
'$lbl2' => t('Your password has been reset as requested.'),
|
||||
'$lbl3' => t('Your new password is'),
|
||||
'$lbl4' => t('Save or copy your new password - and then'),
|
||||
'$lbl5' => '<a href="' . $a->get_baseurl() . '">' . t('click here to login') . '</a>.',
|
||||
'$lbl6' => t('Your password may be changed from the <em>Settings</em> page after successful login.'),
|
||||
'$newpass' => $new_password,
|
||||
'$baseurl' => $a->get_baseurl()
|
||||
|
||||
));
|
||||
notice("Your password has been reset." . EOL);
|
||||
|
||||
|
||||
|
||||
$email_tpl = load_view_file("view/passchanged_eml.tpl");
|
||||
$email_tpl = get_intltext_template("passchanged_eml.tpl");
|
||||
$email_tpl = replace_macros($email_tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
@@ -87,16 +98,24 @@ function lostpass_content(&$a) {
|
||||
'$new_password' => $new_password,
|
||||
'$uid' => $newuid ));
|
||||
|
||||
$res = mail($email,"Your password has changed at {$a->config['sitename']}",$email_tpl,"From: Administrator@{$_SERVER[SERVER_NAME]}");
|
||||
$res = mail($email,"Your password has changed at {$a->config['sitename']}",$email_tpl,
|
||||
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
|
||||
. 'Content-type: text/plain; charset=UTF-8' . "\n"
|
||||
. 'Content-transfer-encoding: 8bit' );
|
||||
|
||||
return $o;
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
$tpl = load_view_file('view/lostpass.tpl');
|
||||
$tpl = get_markup_template('lostpass.tpl');
|
||||
|
||||
$o .= $tpl;
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$title' => t('Forgot your Password?'),
|
||||
'$desc' => t('Enter your email address and submit to have your password reset. Then check your email for further instructions.'),
|
||||
'$name' => t('Nickname or Email: '),
|
||||
'$submit' => t('Reset')
|
||||
));
|
||||
|
||||
return $o;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ function manage_post(&$a) {
|
||||
$_SESSION['page_flags'] = $r[0]['page-flags'];
|
||||
$_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['nickname'];
|
||||
|
||||
notice( t("Welcome back ") . $r[0]['username'] . EOL);
|
||||
notice( sprintf( t("Welcome back %s") , $r[0]['username']) . EOL);
|
||||
$a->user = $r[0];
|
||||
|
||||
if(strlen($a->user['timezone'])) {
|
||||
|
||||
57
mod/match.php
Normal file
57
mod/match.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
|
||||
function match_content(&$a) {
|
||||
|
||||
$o = '';
|
||||
if(! local_user())
|
||||
return;
|
||||
|
||||
$o .= '<h2>' . t('Profile Match') . '</h2>';
|
||||
|
||||
$r = q("SELECT `pub_keywords`, `prv_keywords` FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1",
|
||||
intval(local_user())
|
||||
);
|
||||
if(! count($r))
|
||||
return;
|
||||
if(! $r[0]['pub_keywords'] && (! $r[0]['prv_keywords'])) {
|
||||
notice('No keywords to match. Please add keywords to your default profile.');
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
$params = array();
|
||||
$tags = trim($r[0]['pub_keywords'] . ' ' . $r[0]['prv_keywords']);
|
||||
if($tags) {
|
||||
$params['s'] = $tags;
|
||||
if($a->pager['page'] != 1)
|
||||
$params['p'] = $a->pager['page'];
|
||||
|
||||
$x = post_url('http://dir.friendika.com/msearch', $params);
|
||||
|
||||
$j = json_decode($x);
|
||||
|
||||
if($j->total) {
|
||||
$a->set_pager_total($j->total);
|
||||
$a->set_pager_itemspage($j->items_page);
|
||||
}
|
||||
|
||||
if(count($j->results)) {
|
||||
foreach($j->results as $jj) {
|
||||
$o .= '<div class="profile-match-wrapper"><div class="profile-match-photo">';
|
||||
$o .= '<a href="' . $jj->url . '">' . '<img src="' . $jj->photo . '" alt="' . $jj->name . '" title="' . $jj->name . '[' . $jj->url . ']' . '" /></a></div>';
|
||||
$o .= '<div class="profile-match-break"></div>';
|
||||
$o .= '<div class="profile-match-name"><a href="' . $jj->url . '" title="' . $jj->name . '[' . $jj->url .']' . '">' . $jj->name . '</a></div>';
|
||||
$o .= '<div class="profile-match-end"></div></div>';
|
||||
}
|
||||
$o .= '<div id="profile-match-wrapper-end"></div>';
|
||||
}
|
||||
else {
|
||||
notice( t('No matches') . EOL);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$o .= paginate($a);
|
||||
return $o;
|
||||
}
|
||||
@@ -120,7 +120,7 @@ function message_content(&$a) {
|
||||
$myprofile = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
|
||||
|
||||
|
||||
$tpl = load_view_file('view/mail_head.tpl');
|
||||
$tpl = get_markup_template('mail_head.tpl');
|
||||
$header = replace_macros($tpl, array(
|
||||
'$messages' => t('Messages'),
|
||||
'$inbox' => t('Inbox'),
|
||||
@@ -164,15 +164,18 @@ function message_content(&$a) {
|
||||
|
||||
if(($a->argc > 1) && ($a->argv[1] === 'new')) {
|
||||
|
||||
$tpl = load_view_file('view/msg-header.tpl');
|
||||
$tpl = get_markup_template('msg-header.tpl');
|
||||
|
||||
$a->page['htmlhead'] .= replace_macros($tpl, array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$nickname' => $a->user['nickname']
|
||||
'$nickname' => $a->user['nickname'],
|
||||
'$linkurl' => t('Please enter a link URL:')
|
||||
));
|
||||
|
||||
$select = contact_select('messageto','message-to-select', false, 4, true);
|
||||
$tpl = load_view_file('view/prv_message.tpl');
|
||||
$preselect = (isset($a->argv[2])?array($a->argv[2]):false);
|
||||
|
||||
$select = contact_select('messageto','message-to-select', $preselect, 4, true);
|
||||
$tpl = get_markup_template('prv_message.tpl');
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$header' => t('Send Private Message'),
|
||||
'$to' => t('To:'),
|
||||
@@ -222,7 +225,7 @@ function message_content(&$a) {
|
||||
return $o;
|
||||
}
|
||||
|
||||
$tpl = load_view_file('view/mail_list.tpl');
|
||||
$tpl = get_markup_template('mail_list.tpl');
|
||||
foreach($r as $rr) {
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$id' => $rr['id'],
|
||||
@@ -234,7 +237,7 @@ function message_content(&$a) {
|
||||
'$delete' => t('Delete conversation'),
|
||||
'$body' => $rr['body'],
|
||||
'$to_name' => $rr['name'],
|
||||
'$date' => datetime_convert('UTC',date_default_timezone_get(),$rr['mailcreated'],'D, d M Y - g:i A')
|
||||
'$date' => datetime_convert('UTC',date_default_timezone_get(),$rr['mailcreated'], t('D, d M Y - g:i A'))
|
||||
));
|
||||
}
|
||||
$o .= paginate($a);
|
||||
@@ -272,7 +275,7 @@ function message_content(&$a) {
|
||||
|
||||
require_once("include/bbcode.php");
|
||||
|
||||
$tpl = load_view_file('view/msg-header.tpl');
|
||||
$tpl = get_markup_template('msg-header.tpl');
|
||||
|
||||
$a->page['htmlhead'] .= replace_macros($tpl, array(
|
||||
'$nickname' => $a->user['nickname'],
|
||||
@@ -280,7 +283,7 @@ function message_content(&$a) {
|
||||
));
|
||||
|
||||
|
||||
$tpl = load_view_file('view/mail_conv.tpl');
|
||||
$tpl = get_markup_template('mail_conv.tpl');
|
||||
foreach($messages as $message) {
|
||||
if($message['from-url'] == $myprofile) {
|
||||
$from_url = $myprofile;
|
||||
@@ -306,7 +309,7 @@ function message_content(&$a) {
|
||||
}
|
||||
$select = $message['name'] . '<input type="hidden" name="messageto" value="' . $contact_id . '" />';
|
||||
$parent = '<input type="hidden" name="replyto" value="' . $message['parent-uri'] . '" />';
|
||||
$tpl = load_view_file('view/prv_message.tpl');
|
||||
$tpl = get_markup_template('prv_message.tpl');
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$header' => t('Send Reply'),
|
||||
'$to' => t('To:'),
|
||||
|
||||
436
mod/network.php
436
mod/network.php
@@ -15,25 +15,25 @@ function network_init(&$a) {
|
||||
$a->page['aside'] .= '<div id="network-new-link">';
|
||||
|
||||
if(($a->argc > 1 && $a->argv[1] === 'new') || ($a->argc > 2 && $a->argv[2] === 'new'))
|
||||
$a->page['aside'] .= '<a href="' . $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . '">' . t('Normal View') . '</a>';
|
||||
$a->page['aside'] .= '<a href="' . $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?cid=' . $_GET['cid'] : '') . '">' . t('Normal View') . '</a>';
|
||||
else
|
||||
$a->page['aside'] .= '<a href="' . $a->get_baseurl() . '/' . $a->cmd . '/new' . '">' . t('New Item View') . '</a>';
|
||||
$a->page['aside'] .= '<a href="' . $a->get_baseurl() . '/' . $a->cmd . '/new' . ((x($_GET,'cid')) ? '/?cid=' . $_GET['cid'] : '') . '">' . t('New Item View') . '</a>';
|
||||
|
||||
$a->page['aside'] .= '</div>';
|
||||
|
||||
$a->page['aside'] .= group_side('network','network');
|
||||
$a->page['aside'] .= group_side('network','network',true);
|
||||
}
|
||||
|
||||
|
||||
function network_content(&$a, $update = 0) {
|
||||
|
||||
require_once('include/conversation.php');
|
||||
|
||||
if(! local_user())
|
||||
return login(false);
|
||||
|
||||
$o = '';
|
||||
|
||||
require_once("include/bbcode.php");
|
||||
|
||||
$contact_id = $a->cid;
|
||||
|
||||
$group = 0;
|
||||
@@ -41,6 +41,8 @@ function network_content(&$a, $update = 0) {
|
||||
$nouveau = false;
|
||||
require_once('include/acl_selectors.php');
|
||||
|
||||
$cid = ((x($_GET['cid'])) ? intval($_GET['cid']) : 0);
|
||||
|
||||
if(($a->argc > 2) && $a->argv[2] === 'new')
|
||||
$nouveau = true;
|
||||
|
||||
@@ -49,67 +51,41 @@ function network_content(&$a, $update = 0) {
|
||||
$nouveau = true;
|
||||
else {
|
||||
$group = intval($a->argv[1]);
|
||||
$group_acl = array('allow_gid' => '<' . $group . '>');
|
||||
$def_acl = array('allow_gid' => '<' . $group . '>');
|
||||
}
|
||||
}
|
||||
|
||||
if($cid)
|
||||
$def_acl = array('allow_cid' => '<' . intval($cid) . '>');
|
||||
|
||||
if(! $update) {
|
||||
if(group) {
|
||||
if(($t = group_public_members($group)) && (! get_pconfig(local_user(),'system','nowarn_insecure'))) {
|
||||
$plural_form = sprintf( tt('%d member', '%d members', $t), $t);
|
||||
notice( sprintf( t('Warning: This group contains %s from an insecure network.'), $plural_form ) . EOL);
|
||||
notice( t('Private messages to this group are at risk of public disclosure.') . EOL);
|
||||
}
|
||||
}
|
||||
|
||||
$o .= '<script> $(document).ready(function() { $(\'#nav-network-link\').addClass(\'nav-selected\'); });</script>';
|
||||
|
||||
$_SESSION['return_url'] = $a->cmd;
|
||||
|
||||
$geotag = (($a->user['allow_location']) ? load_view_file('view/jot_geotag.tpl') : '');
|
||||
|
||||
$tpl = load_view_file('view/jot-header.tpl');
|
||||
|
||||
$a->page['htmlhead'] .= replace_macros($tpl, array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$geotag' => $geotag,
|
||||
'$nickname' => $a->user['nickname']
|
||||
));
|
||||
|
||||
|
||||
$tpl = load_view_file("view/jot.tpl");
|
||||
|
||||
if(($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid'])))))
|
||||
$lockstate = 'lock';
|
||||
else
|
||||
$lockstate = 'unlock';
|
||||
|
||||
$celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
|
||||
|
||||
$jotplugins = '';
|
||||
$jotnets = '';
|
||||
call_hooks('jot_tool', $jotplugins);
|
||||
call_hooks('jot_networks', $jotnets);
|
||||
|
||||
$tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$return_path' => $a->cmd,
|
||||
'$action' => 'item',
|
||||
'$share' => t('Share'),
|
||||
'$upload' => t('Upload photo'),
|
||||
'$weblink' => t('Insert web link'),
|
||||
'$youtube' => t('Insert YouTube video'),
|
||||
'$setloc' => t('Set your location'),
|
||||
'$noloc' => t('Clear browser location'),
|
||||
'$wait' => t('Please wait'),
|
||||
'$permset' => t('Permission settings'),
|
||||
'$content' => '',
|
||||
'$post_id' => '',
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$defloc' => $a->user['default-location'],
|
||||
'$visitor' => 'block',
|
||||
'$emailcc' => t('CC: email addresses'),
|
||||
'$jotnets' => $jotnets,
|
||||
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
|
||||
'$lockstate' => $lockstate,
|
||||
'$acl' => populate_acl((($group) ? $group_acl : $a->user), $celeb),
|
||||
'$bang' => (($group) ? '!' : ''),
|
||||
'$profile_uid' => $_SESSION['uid']
|
||||
));
|
||||
$x = array(
|
||||
'is_owner' => true,
|
||||
'allow_location' => $a->user['allow_location'],
|
||||
'default_location' => $a->user['default_location'],
|
||||
'nickname' => $a->user['nickname'],
|
||||
'lockstate' => ((($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'),
|
||||
'acl' => populate_acl((($group || $cid) ? $def_acl : $a->user), $celeb),
|
||||
'bang' => (($group || $cid) ? '!' : ''),
|
||||
'visitor' => 'block',
|
||||
'profile_uid' => local_user()
|
||||
);
|
||||
|
||||
$o .= status_editor($a,$x);
|
||||
|
||||
// The special div is needed for liveUpdate to kick in for this page.
|
||||
// We only launch liveUpdate if you are on the front page, you aren't
|
||||
@@ -119,18 +95,21 @@ function network_content(&$a, $update = 0) {
|
||||
$o .= '<div id="live-network"></div>' . "\r\n";
|
||||
$o .= "<script> var profile_uid = " . $_SESSION['uid']
|
||||
. "; var netargs = '" . substr($a->cmd,8)
|
||||
. ((x($_GET,'cid')) ? '/?cid=' . $_GET['cid'] : '')
|
||||
. "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
|
||||
|
||||
}
|
||||
|
||||
// We aren't going to try and figure out at the item, group, and page level
|
||||
// which items you've seen and which you haven't. You're looking at some
|
||||
// subset of items, so just mark everything seen.
|
||||
// We aren't going to try and figure out at the item, group, and page
|
||||
// level which items you've seen and which you haven't. If you're looking
|
||||
// at the top level network page just mark everything seen.
|
||||
|
||||
$r = q("UPDATE `item` SET `unseen` = 0
|
||||
WHERE `unseen` = 1 AND `uid` = %d",
|
||||
intval($_SESSION['uid'])
|
||||
);
|
||||
if((! $group) && (! $cid)) {
|
||||
$r = q("UPDATE `item` SET `unseen` = 0
|
||||
WHERE `unseen` = 1 AND `uid` = %d",
|
||||
intval($_SESSION['uid'])
|
||||
);
|
||||
}
|
||||
|
||||
// We don't have to deal with ACL's on this page. You're looking at everything
|
||||
// that belongs to you, hence you can see all of it. We will filter by group if
|
||||
@@ -148,7 +127,7 @@ function network_content(&$a, $update = 0) {
|
||||
killme();
|
||||
notice( t('No such group') . EOL );
|
||||
goaway($a->get_baseurl() . '/network');
|
||||
return; // NOTREACHED
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
$contacts = expand_groups(array($group));
|
||||
@@ -160,28 +139,56 @@ function network_content(&$a, $update = 0) {
|
||||
notice( t('Group is empty'));
|
||||
}
|
||||
|
||||
$sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `contact-id` IN ( $contact_str )) ";
|
||||
$sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND ( `contact-id` IN ( $contact_str ) OR `allow_gid` REGEXP '<" . intval($group) . ">' )) ";
|
||||
$o = '<h2>' . t('Group: ') . $r[0]['name'] . '</h2>' . $o;
|
||||
}
|
||||
elseif($cid) {
|
||||
|
||||
if((! $group) && (! $update))
|
||||
$r = q("SELECT `id`,`name`,`network`,`writable` 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 `parent` FROM `item` WHERE `id` = `parent` AND `contact-id` IN ( " . intval($cid) . " )) ";
|
||||
$o = '<h2>' . t('Contact: ') . $r[0]['name'] . '</h2>' . $o;
|
||||
if($r[0]['network'] !== NETWORK_MAIL && $r[0]['network'] !== NETWORK_DFRN && $r[0]['network'] !== NETWORK_FACEBOOK && $r[0]['writable'] && (! get_pconfig(local_user(),'system','nowarn_insecure'))) {
|
||||
notice( t('Private messages to this person are at risk of public disclosure.') . EOL);
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
notice( t('Invalid contact.') . EOL);
|
||||
goaway($a->get_baseurl() . '/network');
|
||||
// NOTREACHED
|
||||
}
|
||||
}
|
||||
|
||||
if((! $group) && (! $cid) && (! $update))
|
||||
$o .= get_birthdays();
|
||||
|
||||
$sql_extra2 = (($nouveau) ? '' : " AND `item`.`parent` = `item`.`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`.`deleted` = 0
|
||||
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||
$sql_extra2
|
||||
$sql_extra ",
|
||||
intval($_SESSION['uid'])
|
||||
);
|
||||
|
||||
if(count($r))
|
||||
if(count($r)) {
|
||||
$a->set_pager_total($r[0]['total']);
|
||||
$a->set_pager_itemspage(40);
|
||||
}
|
||||
|
||||
|
||||
if($nouveau) {
|
||||
|
||||
// "New Item View" - show all items unthreaded in reverse created date order
|
||||
|
||||
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`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`
|
||||
@@ -194,282 +201,65 @@ function network_content(&$a, $update = 0) {
|
||||
intval($a->pager['start']),
|
||||
intval($a->pager['itemspage'])
|
||||
);
|
||||
|
||||
}
|
||||
else {
|
||||
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
|
||||
FROM `item`, (SELECT `p`.`id`,`p`.`created` FROM `item` AS `p` WHERE `p`.`parent`=`p`.`id`) as `parentitem`, `contact`
|
||||
|
||||
// Normal conversation view
|
||||
// First fetch a known number of parent items
|
||||
|
||||
$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 `contact`.`id` = `item`.`contact-id`
|
||||
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||
AND `item`.`parent` = `parentitem`.`id`
|
||||
AND `item`.`parent` = `item`.`id`
|
||||
$sql_extra
|
||||
ORDER BY `parentitem`.`created` DESC, `item`.`gravity` ASC, `item`.`created` ASC LIMIT %d ,%d ",
|
||||
ORDER BY `item`.`created` DESC LIMIT %d ,%d ",
|
||||
intval(local_user()),
|
||||
intval($a->pager['start']),
|
||||
intval($a->pager['itemspage'])
|
||||
);
|
||||
}
|
||||
|
||||
$author_contacts = extract_item_authors($r,local_user());
|
||||
|
||||
$cmnt_tpl = load_view_file('view/comment_item.tpl');
|
||||
$like_tpl = load_view_file('view/like.tpl');
|
||||
$tpl = load_view_file('view/wall_item.tpl');
|
||||
$wallwall = load_view_file('view/wallwall_item.tpl');
|
||||
|
||||
$alike = array();
|
||||
$dlike = array();
|
||||
|
||||
if(count($r)) {
|
||||
|
||||
if($nouveau) {
|
||||
|
||||
$tpl = load_view_file('view/search_item.tpl');
|
||||
$droptpl = load_view_file('view/wall_fake_drop.tpl');
|
||||
|
||||
foreach($r as $item) {
|
||||
|
||||
$comment = '';
|
||||
$owner_url = '';
|
||||
$owner_photo = '';
|
||||
$owner_name = '';
|
||||
$sparkle = '';
|
||||
|
||||
$profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']);
|
||||
$profile_avatar = ((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']);
|
||||
$profile_link = ((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
|
||||
|
||||
$redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
|
||||
|
||||
if(strlen($item['author-link'])) {
|
||||
if(link_compare($item['author-link'],$item['url']) && ($item['network'] === 'dfrn') && (! $item['self'])) {
|
||||
$profile_link = $redirect_url;
|
||||
$sparkle = ' sparkle';
|
||||
}
|
||||
elseif(isset($author_contacts[$item['author-link']])) {
|
||||
$profile_link = $a->get_baseurl() . '/redir/' . $author_contacts[$item['author-link']];
|
||||
$sparkle = ' sparkle';
|
||||
}
|
||||
}
|
||||
|
||||
$location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
if($coord) {
|
||||
if($location)
|
||||
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
|
||||
else
|
||||
$location = '<span class="smalltext">' . $coord . '</span>';
|
||||
}
|
||||
|
||||
$drop = replace_macros($droptpl,array('$id' => $item['id']));
|
||||
$lock = '<div class="wall-item-lock"></div>';
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$id' => $item['item_id'],
|
||||
'$linktitle' => t('View $name\'s profile'),
|
||||
'$profile_url' => $profile_link,
|
||||
'$name' => $profile_name,
|
||||
'$sparkle' => $sparkle,
|
||||
'$lock' => $lock,
|
||||
'$thumb' => $profile_avatar,
|
||||
'$title' => $item['title'],
|
||||
'$body' => smilies(bbcode($item['body'])),
|
||||
'$ago' => relative_date($item['created']),
|
||||
'$location' => $location,
|
||||
'$indent' => '',
|
||||
'$owner_url' => $owner_url,
|
||||
'$owner_photo' => $owner_photo,
|
||||
'$owner_name' => $owner_name,
|
||||
'$drop' => $drop,
|
||||
'$conv' => '<a href="' . $a->get_baseurl() . '/display/' . $a->user['nickname'] . '/' . $item['id'] . '">' . t('View in context') . '</a>'
|
||||
));
|
||||
|
||||
}
|
||||
$o .= paginate($a);
|
||||
|
||||
return $o;
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Then fetch all the children of the parents that are on this page
|
||||
|
||||
foreach($r as $item) {
|
||||
like_puller($a,$item,$alike,'like');
|
||||
like_puller($a,$item,$dlike,'dislike');
|
||||
}
|
||||
$parents_arr = array();
|
||||
$parents_str = '';
|
||||
|
||||
foreach($r as $item) {
|
||||
|
||||
$comment = '';
|
||||
$template = $tpl;
|
||||
$commentww = '';
|
||||
$sparkle = '';
|
||||
$owner_url = $owner_photo = $owner_name = '';
|
||||
|
||||
if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) && ($item['id'] != $item['parent']))
|
||||
continue;
|
||||
|
||||
$redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
|
||||
|
||||
|
||||
|
||||
$lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
|
||||
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
|
||||
? '<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,' . $item['id'] . ');" /></div>'
|
||||
: '<div class="wall-item-lock"></div>');
|
||||
|
||||
|
||||
// Top-level wall post not written by the wall owner (wall-to-wall)
|
||||
// First figure out who owns it.
|
||||
|
||||
$osparkle = '';
|
||||
|
||||
if(($item['parent'] == $item['item_id']) && (! $item['self'])) {
|
||||
|
||||
if($item['type'] === 'wall') {
|
||||
// I do. Put me on the left of the wall-to-wall notice.
|
||||
$owner_url = $a->contact['url'];
|
||||
$owner_photo = $a->contact['thumb'];
|
||||
$owner_name = $a->contact['name'];
|
||||
$template = $wallwall;
|
||||
$commentww = 'ww';
|
||||
}
|
||||
if(($item['type'] === 'remote') && (strlen($item['owner-link'])) && ($item['owner-link'] != $item['author-link'])) {
|
||||
// Could be anybody.
|
||||
$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'] === 'dfrn')) {
|
||||
$owner_url = $redirect_url;
|
||||
$osparkle = ' sparkle';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($update)
|
||||
$return_url = $_SESSION['return_url'];
|
||||
else
|
||||
$return_url = $_SESSION['return_url'] = $a->cmd;
|
||||
|
||||
$likebuttons = '';
|
||||
if($item['id'] == $item['parent']) {
|
||||
$likebuttons = replace_macros($like_tpl,array(
|
||||
'$id' => $item['id'],
|
||||
'$likethis' => t("I like this \x28toggle\x29"),
|
||||
'$nolike' => t("I don't like this \x28toggle\x29"),
|
||||
'$wait' => t('Please wait')
|
||||
));
|
||||
}
|
||||
|
||||
if($item['last-child']) {
|
||||
$comment = replace_macros($cmnt_tpl,array(
|
||||
'$return_path' => '',
|
||||
'$jsreload' => '', // $_SESSION['return_url'],
|
||||
'$type' => 'net-comment',
|
||||
'$id' => $item['item_id'],
|
||||
'$parent' => $item['parent'],
|
||||
'$profile_uid' => $_SESSION['uid'],
|
||||
'$mylink' => $a->contact['url'],
|
||||
'$mytitle' => t('This is you'),
|
||||
'$myphoto' => $a->contact['thumb'],
|
||||
'$ww' => $commentww
|
||||
));
|
||||
}
|
||||
|
||||
$drop = replace_macros(load_view_file('view/wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
|
||||
|
||||
$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']);
|
||||
$profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $thumb);
|
||||
|
||||
if(strlen($item['author-link'])) {
|
||||
$profile_link = $item['author-link'];
|
||||
if(link_compare($item['author-link'],$item['url']) && ($item['network'] === 'dfrn') && (! $item['self'])) {
|
||||
$profile_link = $redirect_url;
|
||||
$sparkle = ' sparkle';
|
||||
}
|
||||
elseif(isset($author_contacts[$item['author-link']])) {
|
||||
$profile_link = $a->get_baseurl() . '/redir/' . $author_contacts[$item['author-link']];
|
||||
$sparkle = ' sparkle';
|
||||
}
|
||||
}
|
||||
else
|
||||
$profile_link = $item['url'];
|
||||
|
||||
$like = ((x($alike,$item['id'])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : '');
|
||||
$dislike = ((x($dlike,$item['id'])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : '');
|
||||
|
||||
$location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
if($coord) {
|
||||
if($location)
|
||||
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
|
||||
else
|
||||
$location = '<span class="smalltext">' . $coord . '</span>';
|
||||
}
|
||||
|
||||
$indent = (($item['parent'] != $item['item_id']) ? ' comment' : '');
|
||||
|
||||
if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
|
||||
$indent .= ' shiny';
|
||||
|
||||
|
||||
// Build the HTML
|
||||
|
||||
$tmp_item = replace_macros($template,array(
|
||||
'$id' => $item['item_id'],
|
||||
'$linktitle' => t('View $name\'s profile'),
|
||||
'$olinktitle' => t('View $owner_name\'s profile'),
|
||||
'$to' => t('to'),
|
||||
'$wall' => t('Wall-to-Wall'),
|
||||
'$vwall' => t('via Wall-To-Wall:'),
|
||||
'$profile_url' => $profile_link,
|
||||
'$name' => $profile_name,
|
||||
'$thumb' => $profile_avatar,
|
||||
'$osparkle' => $osparkle,
|
||||
'$sparkle' => $sparkle,
|
||||
'$title' => $item['title'],
|
||||
'$body' => smilies(bbcode($item['body'])),
|
||||
'$ago' => relative_date($item['created']),
|
||||
'$lock' => $lock,
|
||||
'$location' => $location,
|
||||
'$indent' => $indent,
|
||||
'$owner_url' => $owner_url,
|
||||
'$owner_photo' => $owner_photo,
|
||||
'$owner_name' => $owner_name,
|
||||
'$plink' => get_plink($item),
|
||||
'$drop' => $drop,
|
||||
'$vote' => $likebuttons,
|
||||
'$like' => $like,
|
||||
'$dislike' => $dislike,
|
||||
'$comment' => $comment
|
||||
));
|
||||
|
||||
$arr = array('item' => $item, 'output' => $tmp_item);
|
||||
call_hooks('display_item', $arr);
|
||||
|
||||
$o .= $arr['output'];
|
||||
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`.`rel`, `contact`.`writable`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
|
||||
FROM `item`, (SELECT `p`.`id`,`p`.`created` FROM `item` AS `p` WHERE `p`.`parent`=`p`.`id`) as `parentitem`, `contact`
|
||||
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
|
||||
AND `contact`.`id` = `item`.`contact-id`
|
||||
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||
AND `item`.`parent` = `parentitem`.`id` AND `item`.`parent` IN ( %s )
|
||||
$sql_extra
|
||||
ORDER BY `parentitem`.`created` DESC, `item`.`gravity` ASC, `item`.`created` ASC ",
|
||||
intval(local_user()),
|
||||
dbesc($parents_str)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 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 .= conversation($a,$r,$mode,$update);
|
||||
|
||||
if(! $update) {
|
||||
|
||||
$o .= paginate($a);
|
||||
$o .= '<div class="cc-license">' . t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.') . '</div>';
|
||||
}
|
||||
|
||||
return $o;
|
||||
}
|
||||
}
|
||||
|
||||
129
mod/notes.php
Normal file
129
mod/notes.php
Normal file
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
|
||||
function notes_init(&$a) {
|
||||
|
||||
if(! local_user())
|
||||
return;
|
||||
|
||||
$profile = 0;
|
||||
|
||||
$which = $a->user['nickname'];
|
||||
|
||||
// profile_load($a,$which,$profile);
|
||||
|
||||
}
|
||||
|
||||
|
||||
function notes_content(&$a) {
|
||||
|
||||
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 .= '<h3>' . t('Private 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']);
|
||||
|
||||
|
||||
// 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`.`deleted` = 0
|
||||
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||
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 `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||
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`.`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`.`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)
|
||||
);
|
||||
}
|
||||
|
||||
$o .= conversation($a,$r,'notes',$update);
|
||||
|
||||
|
||||
$o .= paginate($a);
|
||||
return $o;
|
||||
}
|
||||
@@ -65,12 +65,11 @@ function notifications_content(&$a) {
|
||||
else
|
||||
$sql_extra = " AND `ignore` = 0 ";
|
||||
|
||||
|
||||
$tpl = load_view_file('view/intros-top.tpl');
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$hide_url' => ((strlen($sql_extra)) ? 'notifications/all' : 'notifications' ),
|
||||
'$hide_text' => ((strlen($sql_extra)) ? t('Show Ignored Requests') : t('Hide Ignored Requests'))
|
||||
));
|
||||
$o .= '<h1>' . t('Pending Friend/Connect Notifications') . '</h1>' . "\r\n";
|
||||
|
||||
$o .= '<div id="notification-show-hide-wrapper" >';
|
||||
$o .= '<a href="' . ((strlen($sql_extra)) ? 'notifications/all' : 'notifications' ) . '" id="notifications-show-hide-link" >'
|
||||
. ((strlen($sql_extra)) ? t('Show Ignored Requests') : t('Hide Ignored Requests')) . '</a></div>' . "\r\n";
|
||||
|
||||
|
||||
$r = q("SELECT COUNT(*) AS `total` FROM `intro`
|
||||
@@ -90,13 +89,13 @@ function notifications_content(&$a) {
|
||||
if(($r !== false) && (count($r))) {
|
||||
|
||||
|
||||
$tpl = load_view_file("view/intros.tpl");
|
||||
$tpl = get_markup_template("intros.tpl");
|
||||
|
||||
foreach($r as $rr) {
|
||||
|
||||
$friend_selected = (($rr['network'] !== 'stat') ? ' checked="checked" ' : ' disabled ');
|
||||
$fan_selected = (($rr['network'] === 'stat') ? ' checked="checked" disabled ' : '');
|
||||
$dfrn_tpl = load_view_file('view/netfriend.tpl');
|
||||
$dfrn_tpl = get_markup_template('netfriend.tpl');
|
||||
|
||||
$knowyou = '';
|
||||
$dfrn_text = '';
|
||||
@@ -141,24 +140,20 @@ function notifications_content(&$a) {
|
||||
|
||||
if ($a->config['register_policy'] == REGISTER_APPROVE &&
|
||||
$a->config['admin_email'] === $a->user['email']){
|
||||
$o .= load_view_file('view/registrations-top.tpl');
|
||||
$o .= '<h1>' . t('User registrations waiting for confirm') . '</h1>' . "\r\n";
|
||||
|
||||
$r = q("SELECT `register`.*, `contact`.`name`, `user`.`email`
|
||||
FROM `register`
|
||||
LEFT JOIN `contact` ON `register`.`uid` = `contact`.`uid`
|
||||
LEFT JOIN `user` ON `register`.`uid` = `user`.`uid`;");
|
||||
if(($r !== false) && (count($r))) {
|
||||
$tpl = load_view_file("view/registrations.tpl");
|
||||
$o .= '<ul>';
|
||||
foreach($r as $rr) {
|
||||
$o .= "<ul>";
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$fullname' => $rr['name'],
|
||||
'$email' => $rr['email'],
|
||||
'$approvelink' => "regmod/allow/".$rr['hash'],
|
||||
'$denylink' => "regmod/deny/".$rr['hash'],
|
||||
));
|
||||
$o .= "</ul>";
|
||||
$o .= '<li>' . sprintf('%s (%s) : ', $rr['name'],$rr['email'])
|
||||
. '<a href="regmod/allow/' . $rr['hash'] .'">' . t('Approve')
|
||||
. '</a> - <a href="regmod/deny/' . $rr['hash'] . '">' . t('Deny') . '</a></li>' . "\r\n";
|
||||
}
|
||||
$o .= "</ul>";
|
||||
}
|
||||
else
|
||||
notice( t('No registrations.') . EOL);
|
||||
|
||||
53
mod/oexchange.php
Normal file
53
mod/oexchange.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
|
||||
function oexchange_init(&$a) {
|
||||
|
||||
if(($a->argc > 1) && ($a->argv[1] === 'xrd')) {
|
||||
$tpl = get_markup_template('oexchange_xrd.tpl');
|
||||
|
||||
$o = replace_macros($tpl, array('$base' => $a->get_baseurl()));
|
||||
echo $o;
|
||||
killme();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
function oexchange_content(&$a) {
|
||||
|
||||
if(! local_user()) {
|
||||
$o = login(false);
|
||||
return $o;
|
||||
}
|
||||
|
||||
if(($a->argc > 1) && $a->argv[1] === 'done') {
|
||||
notice( t('Post successful.') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
$url = (((x($_GET,'url')) && strlen($_GET['url'])) ? notags(trim($_GET['url'])) : '');
|
||||
|
||||
$s = fetch_url($a->get_baseurl() . '/parse_url&url=' . $url);
|
||||
|
||||
if(! strlen($s))
|
||||
return;
|
||||
|
||||
require_once('include/html2bbcode.php');
|
||||
|
||||
$post = array();
|
||||
|
||||
$post['profile_uid'] = local_user();
|
||||
$post['return'] = '/oexchange/done' ;
|
||||
$post['body'] = html2bbcode($s);
|
||||
$post['type'] = 'wall';
|
||||
|
||||
$_POST = $post;
|
||||
require_once('mod/item.php');
|
||||
item_post($a);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -70,9 +70,18 @@ function openid_content(&$a) {
|
||||
$_SESSION['page_flags'] = $r[0]['page-flags'];
|
||||
$_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['nickname'];
|
||||
|
||||
notice( t("Welcome back ") . $r[0]['username'] . EOL);
|
||||
$a->user = $r[0];
|
||||
|
||||
if($a->user['login_date'] === '0000-00-00 00:00:00') {
|
||||
$_SESSION['return_url'] = 'profile_photo/new';
|
||||
$a->module = 'profile_photo';
|
||||
notice( t("Welcome ") . $a->user['username'] . EOL);
|
||||
notice( t('Please upload a profile photo.') . EOL);
|
||||
}
|
||||
else
|
||||
notice( t("Welcome back ") . $a->user['username'] . EOL);
|
||||
|
||||
|
||||
if(strlen($a->user['timezone'])) {
|
||||
date_default_timezone_set($a->user['timezone']);
|
||||
$a->timezone = $a->user['timezone'];
|
||||
|
||||
18
mod/opensearch.php
Normal file
18
mod/opensearch.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
function opensearch_content(&$a) {
|
||||
|
||||
$tpl = get_markup_template('opensearch.tpl');
|
||||
|
||||
header("Content-type: application/opensearchdescription+xml");
|
||||
|
||||
$o = replace_macros($tpl, array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$nodename' => $a->get_hostname(),
|
||||
));
|
||||
|
||||
echo $o;
|
||||
|
||||
killme();
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -5,11 +5,15 @@ require_once('library/HTML5/Parser.php');
|
||||
|
||||
function parse_url_content(&$a) {
|
||||
|
||||
$url = trim($_GET['url']);
|
||||
logger('parse_url: ' . $_GET['url']);
|
||||
|
||||
$url = trim(hex2bin($_GET['url']));
|
||||
|
||||
logger('parse_url: ' . $url);
|
||||
|
||||
$text = null;
|
||||
|
||||
$template = "<a href=\"%s\" >%s</a>%s";
|
||||
$template = "<a href=\"%s\" >%s</a>\n%s";
|
||||
|
||||
|
||||
$arr = array('url' => $url, 'text' => '');
|
||||
@@ -57,6 +61,8 @@ function parse_url_content(&$a) {
|
||||
$items = $div->getElementsByTagName('p');
|
||||
if($items) {
|
||||
foreach($items as $item) {
|
||||
if($item->getElementsByTagName('script'))
|
||||
continue;
|
||||
$text = $item->textContent;
|
||||
$text = strip_tags($text);
|
||||
if(strlen($text) < 100)
|
||||
@@ -73,6 +79,8 @@ function parse_url_content(&$a) {
|
||||
$items = $dom->getElementsByTagName('p');
|
||||
if($items) {
|
||||
foreach($items as $item) {
|
||||
if($item->getElementsByTagName('script'))
|
||||
continue;
|
||||
$text = $item->textContent;
|
||||
$text = strip_tags($text);
|
||||
if(strlen($text) < 100)
|
||||
|
||||
@@ -19,6 +19,11 @@ function photo_init(&$a) {
|
||||
$default = 'images/default-profile.jpg';
|
||||
|
||||
if(isset($type)) {
|
||||
|
||||
/**
|
||||
* Profile photos
|
||||
*/
|
||||
|
||||
switch($type) {
|
||||
|
||||
case 'profile':
|
||||
@@ -50,6 +55,10 @@ function photo_init(&$a) {
|
||||
}
|
||||
else {
|
||||
|
||||
/**
|
||||
* Other photos
|
||||
*/
|
||||
|
||||
$resolution = 0;
|
||||
$photo = str_replace('.jpg','',$photo);
|
||||
|
||||
@@ -114,7 +123,7 @@ function photo_init(&$a) {
|
||||
// but who should otherwise be able to view it. Show a default image to let
|
||||
// them know permissions was denied. It may be possible to view the image
|
||||
// through an authenticated profile visit.
|
||||
// There won't be many complete unauthorised people seeing this because
|
||||
// There won't be many completely unauthorised people seeing this because
|
||||
// they won't have the photo link, so there's a reasonable chance that the person
|
||||
// might be able to obtain permission to view it.
|
||||
|
||||
|
||||
176
mod/photos.php
176
mod/photos.php
@@ -6,6 +6,10 @@ require_once('include/bbcode.php');
|
||||
|
||||
function photos_init(&$a) {
|
||||
|
||||
|
||||
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
|
||||
return;
|
||||
}
|
||||
$o = '';
|
||||
|
||||
if($a->argc > 1) {
|
||||
@@ -310,6 +314,7 @@ foreach($_FILES AS $key => $val) {
|
||||
$arr['deny_gid'] = $p[0]['deny_gid'];
|
||||
$arr['last-child'] = 1;
|
||||
$arr['visible'] = $visibility;
|
||||
|
||||
$arr['body'] = '[url=' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $p[0]['resource-id'] . ']'
|
||||
. '[img]' . $a->get_baseurl() . '/photo/' . $p[0]['resource-id'] . '-' . $p[0]['scale'] . '.jpg' . '[/img]'
|
||||
. '[/url]';
|
||||
@@ -557,6 +562,8 @@ foreach($_FILES AS $key => $val) {
|
||||
if(($maximagesize) && ($filesize > $maximagesize)) {
|
||||
notice( t('Image exceeds size limit of ') . $maximagesize . EOL);
|
||||
@unlink($src);
|
||||
$foo = 0;
|
||||
call_hooks('photo_post_end',$foo);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -569,6 +576,8 @@ foreach($_FILES AS $key => $val) {
|
||||
logger('mod/photos.php: photos_post(): unable to process image' , 'LOGGER_DEBUG');
|
||||
notice( t('Unable to process image.') . EOL );
|
||||
@unlink($src);
|
||||
$foo = 0;
|
||||
call_hooks('photo_post_end',$foo);
|
||||
killme();
|
||||
}
|
||||
|
||||
@@ -634,6 +643,17 @@ foreach($_FILES AS $key => $val) {
|
||||
|
||||
$item_id = item_store($arr);
|
||||
|
||||
if($item_id) {
|
||||
q("UPDATE `item` SET `plink` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1",
|
||||
dbesc($a->get_baseurl() . '/display/' . $owner_record['nickname'] . '/' . $item_id),
|
||||
intval($page_owner_uid),
|
||||
intval($item_id)
|
||||
);
|
||||
}
|
||||
|
||||
if($visible)
|
||||
proc_run('php', "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
|
||||
@@ -656,6 +676,16 @@ function photos_content(&$a) {
|
||||
// photos/name/image/xxxxx/edit
|
||||
|
||||
|
||||
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');
|
||||
|
||||
if(! x($a->data,'user')) {
|
||||
notice( t('No photos selected') . EOL );
|
||||
return;
|
||||
@@ -802,7 +832,7 @@ function photos_content(&$a) {
|
||||
|
||||
|
||||
|
||||
$tpl = load_view_file('view/photos_upload.tpl');
|
||||
$tpl = get_markup_template('photos_upload.tpl');
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$pagename' => t('Upload Photos'),
|
||||
'$sessid' => session_id(),
|
||||
@@ -848,7 +878,7 @@ function photos_content(&$a) {
|
||||
if($cmd === 'edit') {
|
||||
if(($album != t('Profile Photos')) && ($album != t('Contact Photos'))) {
|
||||
if($can_post) {
|
||||
$edit_tpl = load_view_file('view/album_edit.tpl');
|
||||
$edit_tpl = get_markup_template('album_edit.tpl');
|
||||
$o .= replace_macros($edit_tpl,array(
|
||||
'$nametext' => t('New album name: '),
|
||||
'$nickname' => $a->data['user']['nickname'],
|
||||
@@ -869,7 +899,7 @@ function photos_content(&$a) {
|
||||
}
|
||||
}
|
||||
}
|
||||
$tpl = load_view_file('view/photo_album.tpl');
|
||||
$tpl = get_markup_template('photo_album.tpl');
|
||||
if(count($r))
|
||||
foreach($r as $rr) {
|
||||
$o .= replace_macros($tpl,array(
|
||||
@@ -892,10 +922,9 @@ function photos_content(&$a) {
|
||||
|
||||
if($datatype === 'image') {
|
||||
|
||||
require_once('security.php');
|
||||
require_once('bbcode.php');
|
||||
|
||||
$o = '<div id="live-display"></div>' . "\r\n";
|
||||
|
||||
$o = '';
|
||||
// fetch image, item containing image, then comments
|
||||
|
||||
$ph = q("SELECT * FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s'
|
||||
@@ -948,34 +977,36 @@ function photos_content(&$a) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$o .= '<h3>' . '<a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($ph[0]['album']) . '">' . $ph[0]['album'] . '</a></h3>';
|
||||
$album_link = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($ph[0]['album']);
|
||||
$tools = Null;
|
||||
$lock = Null;
|
||||
|
||||
if($can_post && ($ph[0]['uid'] == $owner_uid)) {
|
||||
$o .= '<div id="photo-edit-link-wrap" ><a id="photo-edit-link" href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $datum . '/edit' . '">' . t('Edit photo') . '</a>';
|
||||
|
||||
$o .= ' - <a id="photo-toprofile-link" href="' . $a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource-id'].'">'.t('Use as profile photo').'</a>';
|
||||
$tools = array(
|
||||
'edit' => array($a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $datum . '/edit', t('Edit photo')),
|
||||
'profile'=>array($a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource-id'], t('Use as profile photo')),
|
||||
);
|
||||
|
||||
// lock
|
||||
$o .= ( ( ($ph[0]['uid'] == local_user()) && (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid'])
|
||||
$lock = ( ( ($ph[0]['uid'] == local_user()) && (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid'])
|
||||
|| strlen($ph[0]['deny_cid']) || strlen($ph[0]['deny_gid'])) )
|
||||
? ' - <img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,\'photo/' . $ph[0]['id'] . '\');" />'
|
||||
: '');
|
||||
? t('Private Message')
|
||||
: Null);
|
||||
|
||||
$o .= '</div>';
|
||||
|
||||
}
|
||||
|
||||
if($prevlink)
|
||||
$o .= '<div id="photo-prev-link"><a href="' . $prevlink .'">' . t('<< Prev') . '</a></div>' ;
|
||||
$prevlink = array($prevlink, t('<< Prev')) ;
|
||||
|
||||
$o .= '<div id="photo-photo"><a href="' . $a->get_baseurl() . '/photo/'
|
||||
. $hires['resource-id'] . '-' . $hires['scale'] . '.jpg" title="'
|
||||
. t('View Full Size') . '" ><img src="' . $a->get_baseurl() . '/photo/'
|
||||
. $lores['resource-id'] . '-' . $lores['scale'] . '.jpg' . '" /></a></div>';
|
||||
$photo = array(
|
||||
'href' => $a->get_baseurl() . '/photo/' . $hires['resource-id'] . '-' . $hires['scale'] . '.jpg',
|
||||
'title'=> t('View Full Size'),
|
||||
'src' => $a->get_baseurl() . '/photo/' . $lores['resource-id'] . '-' . $lores['scale'] . '.jpg'
|
||||
);
|
||||
|
||||
if($nextlink)
|
||||
$o .= '<div id="photo-next-link"><a href="' . $nextlink .'">' . t('Next >>') . '</a></div>';
|
||||
|
||||
$o .= '<div id="photo-photo-end"></div>';
|
||||
$nextlink = array($nextlink, t('Next >>'));
|
||||
|
||||
|
||||
// Do we have an item for this photo?
|
||||
@@ -1027,28 +1058,27 @@ function photos_content(&$a) {
|
||||
}
|
||||
}
|
||||
|
||||
$o .= '<div id="photo-caption" >' . $ph[0]['desc'] . '</div>';
|
||||
|
||||
$tags=Null;
|
||||
if(count($linked_items) && strlen($link_item['tag'])) {
|
||||
$arr = explode(',',$link_item['tag']);
|
||||
// parse tags and add links
|
||||
$o .= '<div id="in-this-photo-text">' . t('Tags: ') . '</div>';
|
||||
$o .= '<div id="in-this-photo">';
|
||||
// parse tags and add links
|
||||
$tag_str = '';
|
||||
foreach($arr as $t) {
|
||||
if(strlen($tag_str))
|
||||
$tag_str .= ', ';
|
||||
$tag_str .= bbcode($t);
|
||||
}
|
||||
$o .= $tag_str . '</div>';
|
||||
$tags = array(t('Tags: '), $tag_str);
|
||||
if($cmd === 'edit')
|
||||
$o .= '<div id="tag-remove"><a href="' . $a->get_baseurl() . '/tagrm/' . $link_item['id'] . '">' . t('[Remove any tag]') . '</a></div>';
|
||||
$tags[] = $a->get_baseurl() . '/tagrm/' . $link_item['id'];
|
||||
$tags[] = t('[Remove any tag]');
|
||||
}
|
||||
|
||||
|
||||
$edit = Null;
|
||||
if(($cmd === 'edit') && ($can_post)) {
|
||||
$edit_tpl = load_view_file('view/photo_edit.tpl');
|
||||
$o .= replace_macros($edit_tpl, array(
|
||||
$edit_tpl = get_markup_template('photo_edit.tpl');
|
||||
$edit = replace_macros($edit_tpl, array(
|
||||
'$id' => $ph[0]['id'],
|
||||
'$album' => $ph[0]['album'],
|
||||
'$newalbum' => t('New album name'),
|
||||
@@ -1069,31 +1099,29 @@ function photos_content(&$a) {
|
||||
|
||||
if(count($linked_items)) {
|
||||
|
||||
$cmnt_tpl = load_view_file('view/comment_item.tpl');
|
||||
$tpl = load_view_file('view/photo_item.tpl');
|
||||
$cmnt_tpl = get_markup_template('comment_item.tpl');
|
||||
$tpl = get_markup_template('photo_item.tpl');
|
||||
$return_url = $a->cmd;
|
||||
|
||||
$like_tpl = load_view_file('view/like.tpl');
|
||||
$like_tpl = get_markup_template('like_noshare.tpl');
|
||||
|
||||
$likebuttons = '';
|
||||
|
||||
if($can_post || can_write_wall($a,$owner_uid)) {
|
||||
$likebuttons = replace_macros($like_tpl,array(
|
||||
'$id' => $item['id'],
|
||||
'$id' => $link_item['id'],
|
||||
'$likethis' => t("I like this \x28toggle\x29"),
|
||||
'$nolike' => t("I don't like this \x28toggle\x29"),
|
||||
'$wait' => t('Please wait')
|
||||
'$share' => t('Share'),
|
||||
'$wait' => t('Please wait')
|
||||
));
|
||||
}
|
||||
|
||||
$comments = '';
|
||||
if(! count($r)) {
|
||||
$o .= '<div id="photo-like-div">';
|
||||
$o .= $likebuttons;
|
||||
$o .= '</div>';
|
||||
|
||||
if($can_post || can_write_wall($a,$owner_uid)) {
|
||||
if($link_item['last-child']) {
|
||||
$o .= replace_macros($cmnt_tpl,array(
|
||||
$comments .= replace_macros($cmnt_tpl,array(
|
||||
'$return_path' => '',
|
||||
'$jsreload' => $return_url,
|
||||
'$type' => 'wall-comment',
|
||||
@@ -1103,6 +1131,8 @@ function photos_content(&$a) {
|
||||
'$mylink' => $contact['url'],
|
||||
'$mytitle' => t('This is you'),
|
||||
'$myphoto' => $contact['thumb'],
|
||||
'$comment' => t('Comment'),
|
||||
'$submit' => t('Submit'),
|
||||
'$ww' => ''
|
||||
));
|
||||
}
|
||||
@@ -1111,6 +1141,9 @@ function photos_content(&$a) {
|
||||
|
||||
$alike = array();
|
||||
$dlike = array();
|
||||
|
||||
$like = '';
|
||||
$dislike = '';
|
||||
|
||||
// display comments
|
||||
if(count($r)) {
|
||||
@@ -1123,17 +1156,11 @@ function photos_content(&$a) {
|
||||
$like = ((isset($alike[$link_item['id']])) ? format_like($alike[$link_item['id']],$alike[$link_item['id'] . '-l'],'like',$link_item['id']) : '');
|
||||
$dislike = ((isset($dlike[$link_item['id']])) ? format_like($dlike[$link_item['id']],$dlike[$link_item['id'] . '-l'],'dislike',$link_item['id']) : '');
|
||||
|
||||
$o .= '<div id="photo-like-div">';
|
||||
$o .= $likebuttons;
|
||||
$o .= $like;
|
||||
$o .= $dislike;
|
||||
$o .= '</div>';
|
||||
|
||||
|
||||
|
||||
if($can_post || can_write_wall($a,$owner_uid)) {
|
||||
if($link_item['last-child']) {
|
||||
$o .= replace_macros($cmnt_tpl,array(
|
||||
$comments .= replace_macros($cmnt_tpl,array(
|
||||
'$return_path' => '',
|
||||
'$jsreload' => $return_url,
|
||||
'$type' => 'wall-comment',
|
||||
@@ -1143,6 +1170,8 @@ function photos_content(&$a) {
|
||||
'$mylink' => $contact['url'],
|
||||
'$mytitle' => t('This is you'),
|
||||
'$myphoto' => $contact['thumb'],
|
||||
'$comment' => t('Comment'),
|
||||
'$submit' => t('Submit'),
|
||||
'$ww' => ''
|
||||
));
|
||||
}
|
||||
@@ -1162,7 +1191,7 @@ function photos_content(&$a) {
|
||||
if($can_post || can_write_wall($a,$owner_uid)) {
|
||||
|
||||
if($item['last-child']) {
|
||||
$comment = replace_macros($cmnt_tpl,array(
|
||||
$comments .= replace_macros($cmnt_tpl,array(
|
||||
'$return_path' => '',
|
||||
'$jsreload' => $return_url,
|
||||
'$type' => 'wall-comment',
|
||||
@@ -1172,6 +1201,8 @@ function photos_content(&$a) {
|
||||
'$mylink' => $contact['url'],
|
||||
'$mytitle' => t('This is you'),
|
||||
'$myphoto' => $contact['thumb'],
|
||||
'$comment' => t('Comment'),
|
||||
'$submit' => t('Submit'),
|
||||
'$ww' => ''
|
||||
));
|
||||
}
|
||||
@@ -1198,10 +1229,10 @@ function photos_content(&$a) {
|
||||
$drop = '';
|
||||
|
||||
if(($item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
|
||||
$drop = replace_macros(load_view_file('view/wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
|
||||
$drop = replace_macros(get_markup_template('wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
|
||||
|
||||
|
||||
$o .= replace_macros($template,array(
|
||||
$comments .= replace_macros($template,array(
|
||||
'$id' => $item['item_id'],
|
||||
'$profile_url' => $profile_link,
|
||||
'$name' => $profile_name,
|
||||
@@ -1217,8 +1248,28 @@ function photos_content(&$a) {
|
||||
}
|
||||
}
|
||||
|
||||
$o .= paginate($a);
|
||||
$paginate = paginate($a);
|
||||
}
|
||||
|
||||
$photo_tpl = get_markup_template('photo_view.tpl');
|
||||
$o .= replace_macros($photo_tpl, array(
|
||||
'$id' => $ph[0]['id'],
|
||||
'$album' => array($album_link,$ph[0]['album']),
|
||||
'$tools' => $tools,
|
||||
'$lock' => $lock,
|
||||
'$photo' => $photo,
|
||||
'$prevlink' => $prevlink,
|
||||
'$nextlink' => $nextlink,
|
||||
'$desc' => $ph[0]['desc'],
|
||||
'$tags' => $tags,
|
||||
'$edit' => $edit,
|
||||
'$likebuttons' => $likebuttons,
|
||||
'$like' => $like,
|
||||
'$dislike' => $dislike,
|
||||
'$comments' => $comments,
|
||||
'$paginate' => $paginate,
|
||||
));
|
||||
|
||||
return $o;
|
||||
}
|
||||
|
||||
@@ -1251,21 +1302,18 @@ function photos_content(&$a) {
|
||||
. $a->data['user']['nickname'] . '/upload' . '">' . t('Upload New Photos') . '</a></div>';
|
||||
}
|
||||
|
||||
$tpl = load_view_file('view/photo_top.tpl');
|
||||
$tpl = get_markup_template('photo_top.tpl');
|
||||
if(count($r)) {
|
||||
foreach($r as $rr) {
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$id' => $rr['id'],
|
||||
'$photolink' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname']
|
||||
. '/image/' . $rr['resource-id'],
|
||||
'$id' => $rr['id'],
|
||||
'$photolink' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $rr['resource-id'],
|
||||
'$phototitle' => t('View Photo'),
|
||||
'$imgsrc' => $a->get_baseurl() . '/photo/'
|
||||
. $rr['resource-id'] . '-' . ((($rr['scale']) == 6) ? 4 : $rr['scale']) . '.jpg',
|
||||
'$albumlink' => $a->get_baseurl() . '/photos/'
|
||||
. $a->data['user']['nickname'] . '/album/' . bin2hex($rr['album']),
|
||||
'$albumname' => $rr['album'],
|
||||
'$albumalt' => t('View Album'),
|
||||
'$imgalt' => $rr['filename']
|
||||
'$imgsrc' => $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . ((($rr['scale']) == 6) ? 4 : $rr['scale']) . '.jpg',
|
||||
'$albumlink' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($rr['album']),
|
||||
'$albumname' => $rr['album'],
|
||||
'$albumalt' => t('View Album'),
|
||||
'$imgalt' => $rr['filename']
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ function ping_init(&$a) {
|
||||
$network = $r[0]['total'];
|
||||
|
||||
$r = q("SELECT COUNT(*) AS `total` FROM `item`
|
||||
WHERE `unseen` = 1 AND `visible` = 1 AND `deleted` = 0 AND `uid` = %d AND `type` != 'remote' ",
|
||||
WHERE `unseen` = 1 AND `visible` = 1 AND `deleted` = 0 AND `uid` = %d AND `wall` = 1 ",
|
||||
intval(local_user())
|
||||
);
|
||||
$home = $r[0]['total'];
|
||||
|
||||
292
mod/profile.php
292
mod/profile.php
@@ -2,6 +2,9 @@
|
||||
|
||||
function profile_init(&$a) {
|
||||
|
||||
if((get_config('system','block_public')) && (! local_user()) && (! remote_user()))
|
||||
return;
|
||||
|
||||
if($a->argc > 1)
|
||||
$which = $a->argv[1];
|
||||
else {
|
||||
@@ -28,6 +31,11 @@ function profile_init(&$a) {
|
||||
$a->page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\r\n";
|
||||
}
|
||||
|
||||
$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 : ''));
|
||||
@@ -43,9 +51,16 @@ function profile_init(&$a) {
|
||||
|
||||
function profile_content(&$a, $update = 0) {
|
||||
|
||||
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
|
||||
return login();
|
||||
}
|
||||
|
||||
|
||||
|
||||
require_once("include/bbcode.php");
|
||||
require_once('include/security.php');
|
||||
|
||||
require_once('include/conversation.php');
|
||||
require_once('include/acl_selectors.php');
|
||||
$groups = array();
|
||||
|
||||
$tab = 'posts';
|
||||
@@ -89,25 +104,21 @@ function profile_content(&$a, $update = 0) {
|
||||
if(x($_GET,'tab'))
|
||||
$tab = notags(trim($_GET['tab']));
|
||||
|
||||
$tpl = load_view_file('view/profile_tabs.tpl');
|
||||
$tpl = get_markup_template('profile_tabs.tpl');
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$url' => $a->get_baseurl() . '/' . $a->cmd,
|
||||
'$phototab' => $a->get_baseurl() . '/photos/' . $a->profile['nickname']
|
||||
'$phototab' => $a->get_baseurl() . '/photos/' . $a->profile['nickname'],
|
||||
'$status' => t('Status'),
|
||||
'$profile' => t('Profile'),
|
||||
'$photos' => t('Photos')
|
||||
));
|
||||
|
||||
|
||||
if($tab === 'profile') {
|
||||
$profile_lang = get_config('system','language');
|
||||
if(! $profile_lang)
|
||||
$profile_lang = 'en';
|
||||
if(file_exists("view/$profile_lang/profile_advanced.php"))
|
||||
require_once("view/$profile_lang/profile_advanced.php");
|
||||
else
|
||||
require_once('view/profile_advanced.php');
|
||||
|
||||
require_once('include/profile_advanced.php');
|
||||
$o .= advanced_profile($a);
|
||||
call_hooks('profile_advanced',$o);
|
||||
|
||||
return $o;
|
||||
}
|
||||
|
||||
@@ -118,57 +129,19 @@ function profile_content(&$a, $update = 0) {
|
||||
|
||||
if(can_write_wall($a,$a->profile['profile_uid'])) {
|
||||
|
||||
$geotag = ((($is_owner || $commvisitor) && $a->profile['allow_location']) ? load_view_file('view/jot_geotag.tpl') : '');
|
||||
$x = array(
|
||||
'is_owner' => $is_owner,
|
||||
'allow_location' => ((($is_owner || $commvisitor) && $a->profile['allow_location']) ? true : false),
|
||||
'default_location' => (($is_owner) ? $a->user['default-location'] : ''),
|
||||
'nickname' => $a->profile['nickname'],
|
||||
'lockstate' => (((is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'),
|
||||
'acl' => (($is_owner) ? populate_acl($a->user, $celeb) : ''),
|
||||
'bang' => '',
|
||||
'visitor' => (($is_owner || $commvisitor) ? 'block' : 'none'),
|
||||
'profile_uid' => $a->profile['profile_uid']
|
||||
);
|
||||
|
||||
$tpl = load_view_file('view/jot-header.tpl');
|
||||
|
||||
$a->page['htmlhead'] .= replace_macros($tpl, array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$geotag' => $geotag,
|
||||
'$nickname' => $a->profile['nickname']
|
||||
));
|
||||
|
||||
require_once('include/acl_selectors.php');
|
||||
|
||||
$tpl = load_view_file('view/jot.tpl');
|
||||
|
||||
if(is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))
|
||||
$lockstate = 'lock';
|
||||
else
|
||||
$lockstate = 'unlock';
|
||||
|
||||
$jotplugins = '';
|
||||
$jotnets = '';
|
||||
call_hooks('jot_tool', $jotplugins);
|
||||
|
||||
call_hooks('jot_networks', $jotnets);
|
||||
|
||||
$tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$action' => 'item',
|
||||
'$share' => t('Share'),
|
||||
'$upload' => t('Upload photo'),
|
||||
'$weblink' => t('Insert web link'),
|
||||
'$youtube' => t('Insert YouTube video'),
|
||||
'$setloc' => t('Set your location'),
|
||||
'$noloc' => t('Clear browser location'),
|
||||
'$wait' => t('Please wait'),
|
||||
'$permset' => t('Permission settings'),
|
||||
'$content' => '',
|
||||
'$post_id' => '',
|
||||
'$defloc' => (($is_owner) ? $a->user['default-location'] : ''),
|
||||
'$return_path' => $a->cmd,
|
||||
'$visitor' => (($is_owner || $commvisitor) ? 'block' : 'none'),
|
||||
'$lockstate' => $lockstate,
|
||||
'$emailcc' => t('CC: email addresses'),
|
||||
'$jotnets' => $jotnets,
|
||||
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
|
||||
'$bang' => '',
|
||||
'$acl' => (($is_owner) ? populate_acl($a->user, $celeb) : ''),
|
||||
'$profile_uid' => $a->profile['profile_uid']
|
||||
));
|
||||
$o .= status_editor($a,$x);
|
||||
}
|
||||
|
||||
// This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
|
||||
@@ -195,7 +168,7 @@ function profile_content(&$a, $update = 0) {
|
||||
// Oh - while we're here... reset the Unseen messages
|
||||
|
||||
$r = q("UPDATE `item` SET `unseen` = 0
|
||||
WHERE `type` != 'remote' AND `unseen` = 1 AND `uid` = %d",
|
||||
WHERE `wall` = 1 AND `unseen` = 1 AND `uid` = %d",
|
||||
intval($_SESSION['uid'])
|
||||
);
|
||||
|
||||
@@ -228,191 +201,66 @@ function profile_content(&$a, $update = 0) {
|
||||
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
|
||||
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||
AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `wall` = 1 )
|
||||
AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1
|
||||
$sql_extra ",
|
||||
intval($a->profile['profile_uid'])
|
||||
|
||||
);
|
||||
|
||||
if(count($r))
|
||||
if(count($r)) {
|
||||
$a->set_pager_total($r[0]['total']);
|
||||
$a->set_pager_itemspage(40);
|
||||
}
|
||||
|
||||
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`network`, `contact`.`rel`,
|
||||
`contact`.`thumb`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
|
||||
$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 `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||
AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `wall` = 1 )
|
||||
AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1
|
||||
$sql_extra
|
||||
ORDER BY `parent` DESC, `gravity` ASC, `id` ASC LIMIT %d ,%d ",
|
||||
ORDER BY `item`.`created` DESC LIMIT %d ,%d ",
|
||||
intval($a->profile['profile_uid']),
|
||||
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`.`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`.`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($a->profile['profile_uid']),
|
||||
dbesc($parents_str)
|
||||
);
|
||||
}
|
||||
|
||||
if($is_owner && ! $update)
|
||||
$o .= get_birthdays();
|
||||
|
||||
$cmnt_tpl = load_view_file('view/comment_item.tpl');
|
||||
|
||||
$like_tpl = load_view_file('view/like.tpl');
|
||||
|
||||
$tpl = load_view_file('view/wall_item.tpl');
|
||||
|
||||
$droptpl = load_view_file('view/wall_item_drop.tpl');
|
||||
$fakedrop = load_view_file('view/wall_fake_drop.tpl');
|
||||
|
||||
if($update)
|
||||
$return_url = $_SESSION['return_url'];
|
||||
else
|
||||
$return_url = $_SESSION['return_url'] = $a->cmd;
|
||||
|
||||
$alike = array();
|
||||
$dlike = array();
|
||||
|
||||
if($r !== false && count($r)) {
|
||||
|
||||
foreach($r as $item) {
|
||||
like_puller($a,$item,$alike,'like');
|
||||
like_puller($a,$item,$dlike,'dislike');
|
||||
}
|
||||
|
||||
foreach($r as $item) {
|
||||
|
||||
$sparkle = '';
|
||||
$comment = '';
|
||||
$likebuttons = '';
|
||||
|
||||
$template = $tpl;
|
||||
|
||||
$redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
|
||||
|
||||
if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
|
||||
&& ($item['id'] != $item['parent']))
|
||||
continue;
|
||||
|
||||
$lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
|
||||
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
|
||||
? '<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,' . $item['id'] . ');" /></div>'
|
||||
: '<div class="wall-item-lock"></div>');
|
||||
|
||||
if(can_write_wall($a,$a->profile['profile_uid'])) {
|
||||
if($item['id'] == $item['parent']) {
|
||||
$likebuttons = replace_macros($like_tpl,array(
|
||||
'$id' => $item['id'],
|
||||
'$likethis' => t("I like this \x28toggle\x29"),
|
||||
'$nolike' => t("I don't like this \x28toggle\x29"),
|
||||
'$wait' => t('Please wait')
|
||||
));
|
||||
}
|
||||
if($item['last-child']) {
|
||||
$comment = replace_macros($cmnt_tpl,array(
|
||||
'$return_path' => '',
|
||||
'$jsreload' => '', // $_SESSION['return_url'],
|
||||
'$type' => 'wall-comment',
|
||||
'$id' => $item['item_id'],
|
||||
'$parent' => $item['parent'],
|
||||
'$profile_uid' => $a->profile['profile_uid'],
|
||||
'$mylink' => $contact['url'],
|
||||
'$mytitle' => t('This is you'),
|
||||
'$myphoto' => $contact['thumb'],
|
||||
'$ww' => ''
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$profile_url = $item['url'];
|
||||
|
||||
// This is my profile page but I'm not the author of this post/comment. If it's somebody that's a fan or mutual friend,
|
||||
// I can go directly to their profile as an authenticated guest.
|
||||
|
||||
if(local_user() && ($item['contact-uid'] == $_SESSION['uid'])
|
||||
&& ($item['network'] === 'dfrn') && (! $item['self'] )) {
|
||||
$profile_url = $redirect_url;
|
||||
$sparkle = ' sparkle';
|
||||
}
|
||||
else
|
||||
$sparkle = '';
|
||||
|
||||
// We would prefer to use our own avatar link for this item because the one in the author-avatar might reference a
|
||||
// remote site (which could be down). We will use author-avatar if we haven't got something stored locally.
|
||||
// We use this same logic block in mod/network.php to determine it this is a third party post and we don't have any
|
||||
// local contact info at all. In this module you should never encounter a third-party author, but we still will do
|
||||
// the right thing if you ever do.
|
||||
|
||||
$diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true);
|
||||
|
||||
$profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
|
||||
$profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $item['thumb']);
|
||||
|
||||
$profile_link = $profile_url;
|
||||
|
||||
$drop = '';
|
||||
$dropping = false;
|
||||
|
||||
if(($item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
|
||||
$dropping = true;
|
||||
|
||||
$drop = replace_macros((($dropping)? $droptpl : $fakedrop), array('$id' => $item['id'], '$delete' => t('Delete')));
|
||||
$o .= conversation($a,$r,'profile',$update);
|
||||
|
||||
|
||||
$like = ((isset($alike[$item['id']])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : '');
|
||||
$dislike = ((isset($dlike[$item['id']])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : '');
|
||||
$location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
if($coord) {
|
||||
if($location)
|
||||
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
|
||||
else
|
||||
$location = '<span class="smalltext">' . $coord . '</span>';
|
||||
}
|
||||
|
||||
$indent = (($item['parent'] != $item['item_id']) ? ' comment' : '');
|
||||
|
||||
if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
|
||||
$indent .= ' shiny';
|
||||
|
||||
$tmp_item = replace_macros($template,array(
|
||||
'$id' => $item['item_id'],
|
||||
'$linktitle' => t('View $name\'s profile'),
|
||||
'$profile_url' => $profile_link,
|
||||
'$name' => $profile_name,
|
||||
'$thumb' => $profile_avatar,
|
||||
'$sparkle' => $sparkle,
|
||||
'$title' => $item['title'],
|
||||
'$body' => smilies(bbcode($item['body'])),
|
||||
'$ago' => relative_date($item['created']),
|
||||
'$lock' => $lock,
|
||||
'$location' => $location,
|
||||
'$indent' => $indent,
|
||||
'$plink' => get_plink($item),
|
||||
'$drop' => $drop,
|
||||
'$like' => $like,
|
||||
'$vote' => $likebuttons,
|
||||
'$dislike' => $dislike,
|
||||
'$comment' => $comment
|
||||
));
|
||||
|
||||
$arr = array('item' => $item, 'output' => $tmp_item);
|
||||
call_hooks('display_item', $arr);
|
||||
|
||||
$o .= $arr['output'];
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if($update) {
|
||||
return $o;
|
||||
}
|
||||
if(! $update) {
|
||||
|
||||
$o .= paginate($a);
|
||||
$o .= '<div class="cc-license">' . t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.') . '</div>';
|
||||
|
||||
$o .= paginate($a);
|
||||
$o .= '<div class="cc-license">' . t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.') . '</div>';
|
||||
}
|
||||
|
||||
return $o;
|
||||
}
|
||||
|
||||
@@ -58,21 +58,21 @@ function profile_photo_post(&$a) {
|
||||
$r = $im->store(local_user(), 0, $base_image['resource-id'],$base_image['filename'], t('Profile Photos'), 4, 1);
|
||||
|
||||
if($r === false)
|
||||
notice ( t('Image size reduction [175] failed.') . EOL );
|
||||
notice ( sprintf(t('Image size reduction [%s] failed.'),"175") . EOL );
|
||||
|
||||
$im->scaleImage(80);
|
||||
|
||||
$r = $im->store(local_user(), 0, $base_image['resource-id'],$base_image['filename'], t('Profile Photos'), 5, 1);
|
||||
|
||||
if($r === false)
|
||||
notice( t('Image size reduction [80] failed.') . EOL );
|
||||
notice( sprintf(t('Image size reduction [%s] failed.'),"80") . EOL );
|
||||
|
||||
$im->scaleImage(48);
|
||||
|
||||
$r = $im->store(local_user(), 0, $base_image['resource-id'],$base_image['filename'], t('Profile Photos'), 6, 1);
|
||||
|
||||
if($r === false)
|
||||
notice( t('Image size reduction [48] failed.') . EOL );
|
||||
notice( sprintf(t('Image size reduction [%s] failed.'),"48") . EOL );
|
||||
|
||||
// Unset the profile photo flag from any other photos I own
|
||||
|
||||
@@ -87,7 +87,7 @@ function profile_photo_post(&$a) {
|
||||
);
|
||||
|
||||
// Update global directory in background
|
||||
$url = $_SESSION['my_url'];
|
||||
$url = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
|
||||
if($url && strlen(get_config('system','directory_submit_url')))
|
||||
proc_run('php',"include/directory.php","$url");
|
||||
}
|
||||
@@ -106,7 +106,7 @@ function profile_photo_post(&$a) {
|
||||
$maximagesize = get_config('system','maximagesize');
|
||||
|
||||
if(($maximagesize) && ($filesize > $maximagesize)) {
|
||||
notice( t('Image exceeds size limit of ') . $maximagesize . EOL);
|
||||
notice( sprintf(t('Image exceeds size limit of %d'), $maximagesize) . EOL);
|
||||
@unlink($src);
|
||||
return;
|
||||
}
|
||||
@@ -134,6 +134,11 @@ function profile_photo_content(&$a) {
|
||||
return;
|
||||
}
|
||||
|
||||
$newuser = false;
|
||||
|
||||
if($a->argc == 2 && $a->argv[1] === 'new')
|
||||
$newuser = true;
|
||||
|
||||
if( $a->argv[1]=='use'){
|
||||
if ($a->argc<3){
|
||||
notice( t('Permission denied.') . EOL );
|
||||
@@ -181,10 +186,14 @@ function profile_photo_content(&$a) {
|
||||
|
||||
if(! x($a->config,'imagecrop')) {
|
||||
|
||||
$tpl = load_view_file('view/profile_photo.tpl');
|
||||
$tpl = get_markup_template('profile_photo.tpl');
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$user' => $a->user['nickname']
|
||||
'$user' => $a->user['nickname'],
|
||||
'$lbl_upfile' => t('Upload File:'),
|
||||
'$title' => t('Upload Profile Photo'),
|
||||
'$submit' => t('Upload'),
|
||||
'$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . $a->get_baseurl() . '">' . t('skip this step') . '</a>' : '<a href="'. $a->get_baseurl() . '/photos/' . $a->user['nickname'] . '">' . t('select a photo from your photo albums') . '</a>')
|
||||
));
|
||||
|
||||
return $o;
|
||||
@@ -192,13 +201,15 @@ function profile_photo_content(&$a) {
|
||||
else {
|
||||
$filename = $a->config['imagecrop'] . '-' . $a->config['imagecrop_resolution'] . '.jpg';
|
||||
$resolution = $a->config['imagecrop_resolution'];
|
||||
$tpl = load_view_file("view/cropbody.tpl");
|
||||
$tpl = get_markup_template("cropbody.tpl");
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$filename' => $filename,
|
||||
'$resource' => $a->config['imagecrop'] . '-' . $a->config['imagecrop_resolution'],
|
||||
'$image_url' => $a->get_baseurl() . '/photo/' . $filename
|
||||
));
|
||||
|
||||
'$image_url' => $a->get_baseurl() . '/photo/' . $filename,
|
||||
'$title' => t('Crop Image'),
|
||||
'$desc' => t('Please adjust the image cropping for optimum viewing.'),
|
||||
'$done' => t('Done Editing')
|
||||
));
|
||||
return $o;
|
||||
}
|
||||
|
||||
@@ -234,14 +245,14 @@ function profile_photo_crop_ui_head(&$a, $ph){
|
||||
$r = $ph->store(local_user(), 0 , $hash, $filename, t('Profile Photos'), 1 );
|
||||
|
||||
if($r === false)
|
||||
notice( t('Image size reduction [640] failed.') . EOL );
|
||||
notice( sprintf(t('Image size reduction [%s] failed.'),"640") . EOL );
|
||||
else
|
||||
$smallest = 1;
|
||||
}
|
||||
|
||||
$a->config['imagecrop'] = $hash;
|
||||
$a->config['imagecrop_resolution'] = $smallest;
|
||||
$a->page['htmlhead'] .= load_view_file("view/crophead.tpl");
|
||||
$a->page['htmlhead'] .= get_markup_template("crophead.tpl");
|
||||
return;
|
||||
}}
|
||||
|
||||
|
||||
@@ -55,7 +55,8 @@ function profiles_post(&$a) {
|
||||
$region = notags(trim($_POST['region']));
|
||||
$postal_code = notags(trim($_POST['postal_code']));
|
||||
$country_name = notags(trim($_POST['country_name']));
|
||||
$keywords = notags(trim($_POST['keywords']));
|
||||
$pub_keywords = notags(trim($_POST['pub_keywords']));
|
||||
$prv_keywords = notags(trim($_POST['prv_keywords']));
|
||||
$marital = notags(trim($_POST['marital']));
|
||||
if($marital != $orig[0]['marital'])
|
||||
$maritalchanged = true;
|
||||
@@ -147,7 +148,8 @@ function profiles_post(&$a) {
|
||||
`homepage` = '%s',
|
||||
`politic` = '%s',
|
||||
`religion` = '%s',
|
||||
`keywords` = '%s',
|
||||
`pub_keywords` = '%s',
|
||||
`prv_keywords` = '%s',
|
||||
`about` = '%s',
|
||||
`interest` = '%s',
|
||||
`contact` = '%s',
|
||||
@@ -176,7 +178,8 @@ function profiles_post(&$a) {
|
||||
dbesc($homepage),
|
||||
dbesc($politic),
|
||||
dbesc($religion),
|
||||
dbesc($keywords),
|
||||
dbesc($pub_keywords),
|
||||
dbesc($prv_keywords),
|
||||
dbesc($about),
|
||||
dbesc($interest),
|
||||
dbesc($contact),
|
||||
@@ -344,10 +347,13 @@ function profiles_content(&$a) {
|
||||
|
||||
require_once('include/profile_selectors.php');
|
||||
|
||||
$tpl = load_view_file('view/profed_head.tpl');
|
||||
$tpl = get_markup_template('profed_head.tpl');
|
||||
|
||||
$opt_tpl = load_view_file("view/profile-hide-friends.tpl");
|
||||
$opt_tpl = get_markup_template("profile-hide-friends.tpl");
|
||||
$hide_friends = replace_macros($opt_tpl,array(
|
||||
'$desc' => t('Hide my contact/friend list from viewers of this profile?'),
|
||||
'$yes_str' => t('Yes'),
|
||||
'$no_str' => t('No'),
|
||||
'$yes_selected' => (($r[0]['hide-friends']) ? " checked=\"checked\" " : ""),
|
||||
'$no_selected' => (($r[0]['hide-friends'] == 0) ? " checked=\"checked\" " : "")
|
||||
));
|
||||
@@ -358,8 +364,46 @@ function profiles_content(&$a) {
|
||||
|
||||
|
||||
$is_default = (($r[0]['is-default']) ? 1 : 0);
|
||||
$tpl = load_view_file("view/profile_edit.tpl");
|
||||
$tpl = get_markup_template("profile_edit.tpl");
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$banner' => t('Edit Profile Details'),
|
||||
'$submit' => t('Submit'),
|
||||
'$viewprof' => t('View this profile'),
|
||||
'$cr_prof' => t('Create a new profile using these settings'),
|
||||
'$cl_prof' => t('Clone this profile'),
|
||||
'$del_prof' => t('Delete this profile'),
|
||||
'$lbl_profname' => t('Profile Name:'),
|
||||
'$lbl_fullname' => t('Your Full Name:'),
|
||||
'$lbl_title' => t('Title/Description:'),
|
||||
'$lbl_gender' => t('Your Gender:'),
|
||||
'$lbl_bd' => t("Birthday \x28y/m/d\x29:"),
|
||||
'$lbl_address' => t('Street Address:'),
|
||||
'$lbl_city' => t('Locality/City:'),
|
||||
'$lbl_zip' => t('Postal/Zip Code:'),
|
||||
'$lbl_country' => t('Country:'),
|
||||
'$lbl_region' => t('Region/State:'),
|
||||
'$lbl_marital' => t('<span class="heart">♥</span> Marital Status:'),
|
||||
'$lbl_with' => t("Who: \x28if applicable\x29"),
|
||||
'$lbl_ex1' => t('Examples: cathy123, Cathy Williams, cathy@example.com'),
|
||||
'$lbl_sexual' => t('Sexual Preference:'),
|
||||
'$lbl_homepage' => t('Homepage URL:'),
|
||||
'$lbl_politic' => t('Political Views:'),
|
||||
'$lbl_religion' => t('Religious Views:'),
|
||||
'$lbl_pubkey' => t('Public Keywords:'),
|
||||
'$lbl_prvkey' => t('Private Keywords:'),
|
||||
'$lbl_ex2' => t('Example: fishing photography software'),
|
||||
'$lbl_pubdsc' => t("\x28Used for suggesting potential friends, can be seen by others\x29"),
|
||||
'$lbl_prvdsc' => t("\x28Used for searching profiles, never shown to others\x29"),
|
||||
'$lbl_about' => t('Tell us about yourself...'),
|
||||
'$lbl_hobbies' => t('Hobbies/Interests'),
|
||||
'$lbl_social' => t('Contact information and Social Networks'),
|
||||
'$lbl_music' => t('Musical interests'),
|
||||
'$lbl_book' => t('Books, literature'),
|
||||
'$lbl_tv' => t('Television'),
|
||||
'$lbl_film' => t('Film/dance/culture/entertainment'),
|
||||
'$lbl_love' => t('Love/romance'),
|
||||
'$lbl_work' => t('Work/employment'),
|
||||
'$lbl_school' => t('School/education'),
|
||||
'$disabled' => (($is_default) ? 'onclick="return false;" style="color: #BBBBFF;"' : ''),
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$profile_id' => $r[0]['id'],
|
||||
@@ -383,7 +427,8 @@ function profiles_content(&$a) {
|
||||
'$homepage' => $r[0]['homepage'],
|
||||
'$politic' => $r[0]['politic'],
|
||||
'$religion' => $r[0]['religion'],
|
||||
'$keywords' => $r[0]['keywords'],
|
||||
'$pub_keywords' => $r[0]['pub_keywords'],
|
||||
'$prv_keywords' => $r[0]['prv_keywords'],
|
||||
'$music' => $r[0]['music'],
|
||||
'$book' => $r[0]['book'],
|
||||
'$tv' => $r[0]['tv'],
|
||||
@@ -406,17 +451,24 @@ function profiles_content(&$a) {
|
||||
local_user());
|
||||
if(count($r)) {
|
||||
|
||||
$o .= load_view_file('view/profile_listing_header.tpl');
|
||||
$tpl_default = load_view_file('view/profile_entry_default.tpl');
|
||||
$tpl = load_view_file('view/profile_entry.tpl');
|
||||
$tpl_header = get_markup_template('profile_listing_header.tpl');
|
||||
$o .= replace_macros($tpl_header,array(
|
||||
'$header' => t('Profiles'),
|
||||
'$chg_photo' => t('Change profile photo'),
|
||||
'$cr_new' => t('Create New Profile')
|
||||
));
|
||||
|
||||
|
||||
$tpl = get_markup_template('profile_entry.tpl');
|
||||
|
||||
foreach($r as $rr) {
|
||||
$template = (($rr['is-default']) ? $tpl_default : $tpl);
|
||||
$o .= replace_macros($template, array(
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$photo' => $rr['thumb'],
|
||||
'$id' => $rr['id'],
|
||||
'$alt' => t('Profile Image'),
|
||||
'$profile_name' => $rr['profile-name']
|
||||
'$profile_name' => $rr['profile-name'],
|
||||
'$visible' => (($rr['is-default']) ? '<strong>' . t('Visible to everybody') . '</strong>'
|
||||
: '<a href="' . $a->get_baseurl() . '/profperm/' . $rr['id'] . '" />' . t('Edit visibility') . '</a>')
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
141
mod/profperm.php
Normal file
141
mod/profperm.php
Normal file
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
|
||||
function profperm_init(&$a) {
|
||||
|
||||
if(! local_user())
|
||||
return;
|
||||
|
||||
$which = $a->user['nickname'];
|
||||
$profile = $a->argv[1];
|
||||
|
||||
profile_load($a,$which,$profile);
|
||||
|
||||
}
|
||||
|
||||
|
||||
function profperm_content(&$a) {
|
||||
|
||||
if(! local_user()) {
|
||||
notice( t('Permission denied') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if($a->argc < 2) {
|
||||
notice( t('Invalid profile identifier.') . EOL );
|
||||
return;
|
||||
}
|
||||
|
||||
if(($a->argc > 2) && intval($a->argv[1]) && intval($a->argv[2])) {
|
||||
$r = q("SELECT `id` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `self` = 0
|
||||
AND `network` = 'dfrn' AND `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($a->argv[2]),
|
||||
intval(local_user())
|
||||
);
|
||||
if(count($r))
|
||||
$change = intval($a->argv[2]);
|
||||
}
|
||||
|
||||
|
||||
if(($a->argc > 1) && (intval($a->argv[1]))) {
|
||||
$r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d AND `is-default` = 0 LIMIT 1",
|
||||
intval($a->argv[1]),
|
||||
intval(local_user())
|
||||
);
|
||||
if(! count($r)) {
|
||||
notice( t('Invalid profile identifier.') . EOL );
|
||||
return;
|
||||
}
|
||||
$profile = $r[0];
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `profile-id` = %d",
|
||||
intval(local_user()),
|
||||
intval($a->argv[1])
|
||||
);
|
||||
|
||||
$ingroup = array();
|
||||
if(count($r))
|
||||
foreach($r as $member)
|
||||
$ingroup[] = $member['id'];
|
||||
|
||||
$members = $r;
|
||||
|
||||
if($change) {
|
||||
if(in_array($change,$ingroup)) {
|
||||
q("UPDATE `contact` SET `profile-id` = 0 WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($change),
|
||||
intval(local_user())
|
||||
);
|
||||
}
|
||||
else {
|
||||
q("UPDATE `contact` SET `profile-id` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($a->argv[1]),
|
||||
intval($change),
|
||||
intval(local_user())
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `profile-id` = %d",
|
||||
intval(local_user()),
|
||||
intval($a->argv[1])
|
||||
);
|
||||
|
||||
$members = $r;
|
||||
|
||||
$ingroup = array();
|
||||
if(count($r))
|
||||
foreach($r as $member)
|
||||
$ingroup[] = $member['id'];
|
||||
}
|
||||
|
||||
$o .= '<h2>' . t('Profile Visibility Editor') . '</h2>';
|
||||
|
||||
$o .= '<h3>' . t('Profile') . ' \'' . $profile['profile-name'] . '\'</h3>';
|
||||
|
||||
$o .= '<div id="prof-edit-desc">' . t('Click on a contact to add or remove.') . '</div>';
|
||||
|
||||
}
|
||||
|
||||
$o .= '<div id="prof-update-wrapper">';
|
||||
if($change)
|
||||
$o = '';
|
||||
|
||||
$o .= '<div id="prof-members">';
|
||||
$o .= '<h3>' . t('Visible To') . '</h3>';
|
||||
foreach($members as $member) {
|
||||
if($member['url']) {
|
||||
$member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['id'] . '); return true;';
|
||||
$o .= micropro($member,true,'mpprof');
|
||||
}
|
||||
}
|
||||
$o .= '</div><div id="prof-members-end"></div>';
|
||||
$o .= '<hr id="prof-separator" />';
|
||||
$o .= '<div id="prof-all-contacts">';
|
||||
|
||||
$o .= '<h3>' . t("All Contacts \x28with secure profile access\x29") . '</h3>';
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0
|
||||
AND `network` = 'dfrn' ORDER BY `name` ASC",
|
||||
intval(local_user())
|
||||
);
|
||||
|
||||
if(count($r)) {
|
||||
foreach($r as $member) {
|
||||
if(! in_array($member['id'],$ingroup)) {
|
||||
$member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['id'] . '); return true;';
|
||||
$o .= micropro($member,true,'mpprof');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$o .= '</div><div id="prof-all-contacts-end"></div>';
|
||||
|
||||
if($change) {
|
||||
echo $o;
|
||||
killme();
|
||||
}
|
||||
$o .= '</div>';
|
||||
return $o;
|
||||
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ function redir_init(&$a) {
|
||||
if((! local_user()) || (! ($a->argc == 2)) || (! intval($a->argv[1])))
|
||||
goaway($a->get_baseurl());
|
||||
$cid = $a->argv[1];
|
||||
$url = ((x($_GET,'url')) ? $_GET['url'] : '');
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($cid),
|
||||
@@ -37,8 +38,8 @@ function redir_init(&$a) {
|
||||
);
|
||||
|
||||
logger('mod_redir: ' . $r[0]['name'] . ' ' . $sec, LOGGER_DEBUG);
|
||||
|
||||
$dest = (($url) ? '&destination_url=' . $url : '');
|
||||
goaway ($r[0]['poll'] . '?dfrn_id=' . $dfrn_id
|
||||
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec);
|
||||
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest );
|
||||
|
||||
}
|
||||
|
||||
@@ -70,9 +70,9 @@ function register_post(&$a) {
|
||||
$err = '';
|
||||
|
||||
|
||||
if(strlen($username) > 48)
|
||||
if(mb_strlen($username) > 48)
|
||||
$err .= t('Please use a shorter name.') . EOL;
|
||||
if(strlen($username) < 3)
|
||||
if(mb_strlen($username) < 3)
|
||||
$err .= t('Name too short.') . EOL;
|
||||
|
||||
// I don't really like having this rule, but it cuts down
|
||||
@@ -85,8 +85,11 @@ function register_post(&$a) {
|
||||
// So now we are just looking for a space in the full name.
|
||||
|
||||
$loose_reg = get_config('system','no_regfullname');
|
||||
if((! $loose_reg) && (! strpos($username,' ')))
|
||||
$err .= t("That doesn\'t appear to be your full \x28First Last\x29 name.") . EOL;
|
||||
if(! $loose_reg) {
|
||||
$username = mb_convert_case($username,MB_CASE_TITLE,'UTF-8');
|
||||
if(! strpos($username,' '))
|
||||
$err .= t("That doesn't appear to be your full \x28First Last\x29 name.") . EOL;
|
||||
}
|
||||
|
||||
if(! allowed_email($email))
|
||||
$err .= t('Your email domain is not among those allowed on this site.') . EOL;
|
||||
@@ -199,6 +202,24 @@ function register_post(&$a) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* if somebody clicked submit twice very quickly, they could end up with two accounts
|
||||
* due to race condition. Remove this one.
|
||||
*/
|
||||
|
||||
$r = q("SELECT `uid` FROM `user`
|
||||
WHERE `nickname` = '%s' ",
|
||||
dbesc($nickname)
|
||||
);
|
||||
if((count($r) > 1) && $newuid) {
|
||||
$err .= t('Nickname is already registered. Please choose another.') . EOL;
|
||||
q("DELETE FROM `user` WHERE `uid` = %d LIMIT 1",
|
||||
intval($newuid)
|
||||
);
|
||||
notice ($err);
|
||||
return;
|
||||
}
|
||||
|
||||
if(x($newuid) !== false) {
|
||||
$r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb`, `publish`, `net-publish` )
|
||||
VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, %d ) ",
|
||||
@@ -298,7 +319,7 @@ function register_post(&$a) {
|
||||
|
||||
|
||||
if( $a->config['register_policy'] == REGISTER_OPEN ) {
|
||||
$email_tpl = load_view_file("view/register_open_eml.tpl");
|
||||
$email_tpl = get_intltext_template("register_open_eml.tpl");
|
||||
$email_tpl = replace_macros($email_tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
@@ -307,8 +328,11 @@ function register_post(&$a) {
|
||||
'$password' => $new_password,
|
||||
'$uid' => $newuid ));
|
||||
|
||||
$res = mail($email, t('Registration details for ') . $a->config['sitename'],
|
||||
$email_tpl, 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME']);
|
||||
$res = mail($email, sprintf(t('Registration details for %s'), $a->config['sitename']),
|
||||
$email_tpl,
|
||||
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
|
||||
. 'Content-type: text/plain; charset=UTF-8' . "\n"
|
||||
. 'Content-transfer-encoding: 8bit' );
|
||||
|
||||
|
||||
if($res) {
|
||||
@@ -333,7 +357,7 @@ function register_post(&$a) {
|
||||
dbesc($new_password)
|
||||
);
|
||||
|
||||
$email_tpl = load_view_file("view/register_verify_eml.tpl");
|
||||
$email_tpl = get_intltext_template("register_verify_eml.tpl");
|
||||
$email_tpl = replace_macros($email_tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
@@ -344,9 +368,11 @@ function register_post(&$a) {
|
||||
'$hash' => $hash
|
||||
));
|
||||
|
||||
$res = mail($a->config['admin_email'], t('Registration request at ') . $a->config['sitename'],
|
||||
$email_tpl,'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME']);
|
||||
|
||||
$res = mail($a->config['admin_email'], sprintf(t('Registration request at %s'), $a->config['sitename']),
|
||||
$email_tpl,
|
||||
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
|
||||
. 'Content-type: text/plain; charset=UTF-8' . "\n"
|
||||
. 'Content-transfer-encoding: 8bit' );
|
||||
if($res) {
|
||||
notice( t('Your registration is pending approval by the site owner.') . EOL ) ;
|
||||
goaway($a->get_baseurl());
|
||||
@@ -409,7 +435,7 @@ function register_content(&$a) {
|
||||
$profile_publish_reg = '<input type="hidden" name="profile_publish_reg" value="1" />';
|
||||
}
|
||||
else {
|
||||
$publish_tpl = load_view_file("view/profile_publish.tpl");
|
||||
$publish_tpl = get_markup_template("profile_publish.tpl");
|
||||
$profile_publish = replace_macros($publish_tpl,array(
|
||||
'$instance' => 'reg',
|
||||
'$pubdesc' => t('Include your profile in member directory?'),
|
||||
@@ -424,7 +450,7 @@ function register_content(&$a) {
|
||||
$license = t('Shared content is covered by the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a> license.');
|
||||
|
||||
|
||||
$o = load_view_file("view/register.tpl");
|
||||
$o = get_markup_template("register.tpl");
|
||||
$o = replace_macros($o, array(
|
||||
'$oidhtml' => $oidhtml,
|
||||
'$realpeople' => $realpeople,
|
||||
|
||||
@@ -51,7 +51,7 @@ function regmod_content(&$a) {
|
||||
$r = q("DELETE FROM `register` WHERE `hash` = '%s' LIMIT 1",
|
||||
dbesc($register[0]['hash'])
|
||||
);
|
||||
notice( t('Registration revoked for ') . $user[0]['username'] . EOL);
|
||||
notice( sprintf(t('Registration revoked for %s'), $user[0]['username']) . EOL);
|
||||
return;
|
||||
|
||||
}
|
||||
@@ -79,7 +79,7 @@ function regmod_content(&$a) {
|
||||
proc_run('php',"include/directory.php","$url");
|
||||
}
|
||||
|
||||
$email_tpl = load_view_file("view/register_open_eml.tpl");
|
||||
$email_tpl = get_intltext_template("register_open_eml.tpl");
|
||||
$email_tpl = replace_macros($email_tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
@@ -89,8 +89,11 @@ function regmod_content(&$a) {
|
||||
'$uid' => $user[0]['uid']
|
||||
));
|
||||
|
||||
$res = mail($user[0]['email'], t('Registration details for '). $a->config['sitename'],
|
||||
$email_tpl,'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] );
|
||||
$res = mail($user[0]['email'], sprintf(t('Registration details for %s'), $a->config['sitename']),
|
||||
$email_tpl,
|
||||
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
|
||||
. 'Content-type: text/plain; charset=UTF-8' . "\n"
|
||||
. 'Content-transfer-encoding: 8bit' );
|
||||
|
||||
if($res) {
|
||||
notice( t('Account approved.') . EOL );
|
||||
|
||||
@@ -35,7 +35,7 @@ function removeme_content(&$a) {
|
||||
|
||||
$_SESSION['remove_account_verify'] = $hash;
|
||||
|
||||
$tpl = load_view_file('view/removeme.tpl');
|
||||
$tpl = get_markup_template('removeme.tpl');
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$basedir' => $a->get_baseurl(),
|
||||
'$hash' => $hash,
|
||||
|
||||
24
mod/rsd_xml.php
Normal file
24
mod/rsd_xml.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
function rsd_xml_content(&$a) {
|
||||
header ("Content-Type: text/xml");
|
||||
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>
|
||||
<apis>
|
||||
<api name="Twitter" preferred="true" apiLink="'.$a->get_baseurl().'/api/" blogID="">
|
||||
<settings>
|
||||
<docs>http://status.net/wiki/TwitterCompatibleAPI</docs>
|
||||
<setting name="OAuth">false</setting>
|
||||
</settings>
|
||||
</api>
|
||||
</apis>
|
||||
</service>
|
||||
</rsd>
|
||||
';
|
||||
die();
|
||||
}
|
||||
@@ -89,7 +89,7 @@ function salmon_post(&$a) {
|
||||
|
||||
// Create a fake feed wrapper so simplepie doesn't choke
|
||||
|
||||
$tpl = load_view_file('view/fake_feed.tpl');
|
||||
$tpl = get_markup_template('fake_feed.tpl');
|
||||
|
||||
$base = substr($data,strpos($data,'<entry'));
|
||||
|
||||
|
||||
@@ -9,6 +9,15 @@ function search_post(&$a) {
|
||||
|
||||
function search_content(&$a) {
|
||||
|
||||
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');
|
||||
|
||||
if(x($_SESSION,'theme'))
|
||||
unset($_SESSION['theme']);
|
||||
|
||||
@@ -26,8 +35,6 @@ function search_content(&$a) {
|
||||
if(! $search)
|
||||
return $o;
|
||||
|
||||
require_once("include/bbcode.php");
|
||||
require_once('include/security.php');
|
||||
|
||||
$sql_extra = "
|
||||
AND `item`.`allow_cid` = ''
|
||||
@@ -36,12 +43,20 @@ function search_content(&$a) {
|
||||
AND `item`.`deny_gid` = ''
|
||||
";
|
||||
|
||||
$s_bool = "AND MATCH (`item`.`body`) AGAINST ( '%s' IN BOOLEAN MODE )";
|
||||
$s_regx = "AND `item`.`body` REGEXP '%s' ";
|
||||
|
||||
if(mb_strlen($search) >= 3)
|
||||
$search_alg = $s_bool;
|
||||
else
|
||||
$search_alg = $s_regx;
|
||||
|
||||
$r = q("SELECT COUNT(*) AS `total`
|
||||
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0
|
||||
AND ( `wall` = 1 OR `contact`.`uid` = %d )
|
||||
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||
AND MATCH (`item`.`body`) AGAINST ( '%s' IN BOOLEAN MODE )
|
||||
$search_alg
|
||||
$sql_extra ",
|
||||
intval(local_user()),
|
||||
dbesc($search)
|
||||
@@ -57,7 +72,7 @@ function search_content(&$a) {
|
||||
|
||||
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`self`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
|
||||
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
|
||||
`user`.`nickname`
|
||||
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
@@ -65,74 +80,16 @@ function search_content(&$a) {
|
||||
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0
|
||||
AND ( `wall` = 1 OR `contact`.`uid` = %d )
|
||||
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||
AND MATCH (`item`.`body`) AGAINST ( '%s' IN BOOLEAN MODE )
|
||||
$search_alg
|
||||
$sql_extra
|
||||
ORDER BY `parent` DESC ",
|
||||
intval(local_user()),
|
||||
dbesc($search)
|
||||
);
|
||||
|
||||
$tpl = load_view_file('view/search_item.tpl');
|
||||
$droptpl = load_view_file('view/wall_fake_drop.tpl');
|
||||
|
||||
$return_url = $_SESSION['return_url'] = $a->cmd;
|
||||
|
||||
if(count($r)) {
|
||||
|
||||
foreach($r as $item) {
|
||||
|
||||
$total = 0;
|
||||
$comment = '';
|
||||
$owner_url = '';
|
||||
$owner_photo = '';
|
||||
$owner_name = '';
|
||||
$sparkle = '';
|
||||
|
||||
if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE)))
|
||||
&& ($item['id'] != $item['parent']))
|
||||
continue;
|
||||
|
||||
$total ++;
|
||||
|
||||
$profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']);
|
||||
$profile_avatar = ((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']);
|
||||
$profile_link = ((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
|
||||
|
||||
|
||||
$location = (($item['location']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
if($coord) {
|
||||
if($location)
|
||||
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
|
||||
else
|
||||
$location = '<span class="smalltext">' . $coord . '</span>';
|
||||
}
|
||||
|
||||
$drop = replace_macros($droptpl,array('$id' => $item['id']));
|
||||
$lock = '<div class="wall-item-lock"></div>';
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$id' => $item['item_id'],
|
||||
'$linktitle' => t('View $name\'s profile'),
|
||||
'$profile_url' => $profile_link,
|
||||
'$name' => $profile_name,
|
||||
'$sparkle' => $sparkle,
|
||||
'$lock' => $lock,
|
||||
'$thumb' => $profile_avatar,
|
||||
'$title' => $item['title'],
|
||||
'$body' => bbcode($item['body']),
|
||||
'$ago' => relative_date($item['created']),
|
||||
'$location' => $location,
|
||||
'$indent' => '',
|
||||
'$owner_url' => $owner_url,
|
||||
'$owner_photo' => $owner_photo,
|
||||
'$owner_name' => $owner_name,
|
||||
'$drop' => $drop,
|
||||
'$conv' => '<a href="' . $a->get_baseurl() . '/display/' . $item['nickname'] . '/' . $item['id'] . '">' . t('View in context') . '</a>'
|
||||
));
|
||||
|
||||
}
|
||||
}
|
||||
$o .= conversation($a,$r,'search',false);
|
||||
|
||||
$o .= paginate($a);
|
||||
|
||||
|
||||
175
mod/settings.php
175
mod/settings.php
@@ -5,6 +5,7 @@ function settings_init(&$a) {
|
||||
if(local_user()) {
|
||||
profile_load($a,$a->user['nickname']);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -63,12 +64,54 @@ function settings_post(&$a) {
|
||||
$defloc = ((x($_POST,'defloc')) ? notags(trim($_POST['defloc'])) : '');
|
||||
$openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
|
||||
$maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 0);
|
||||
$expire = ((x($_POST,'expire')) ? intval($_POST['expire']) : 0);
|
||||
|
||||
$allow_location = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0);
|
||||
$publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
|
||||
$net_publish = (((x($_POST,'profile_in_netdirectory')) && (intval($_POST['profile_in_netdirectory']) == 1)) ? 1: 0);
|
||||
$old_visibility = (((x($_POST,'visibility')) && (intval($_POST['visibility']) == 1)) ? 1 : 0);
|
||||
$page_flags = (((x($_POST,'page-flags')) && (intval($_POST['page-flags']))) ? intval($_POST['page-flags']) : 0);
|
||||
$blockwall = (((x($_POST,'blockwall')) && (intval($_POST['blockwall']) == 1)) ? 0: 1); // this setting is inverted!
|
||||
|
||||
$mail_server = ((x($_POST,'mail_server')) ? $_POST['mail_server'] : '');
|
||||
$mail_port = ((x($_POST,'mail_port')) ? $_POST['mail_port'] : '');
|
||||
$mail_ssl = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : '');
|
||||
$mail_user = ((x($_POST,'mail_user')) ? $_POST['mail_user'] : '');
|
||||
$mail_pass = ((x($_POST,'mail_pass')) ? trim($_POST['mail_pass']) : '');
|
||||
$mail_replyto = ((x($_POST,'mail_replyto')) ? $_POST['mail_replyto'] : '');
|
||||
$mail_pubmail = ((x($_POST,'mail_pubmail')) ? $_POST['mail_pubmail'] : '');
|
||||
|
||||
|
||||
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
|
||||
|
||||
if(! $mail_disabled) {
|
||||
$r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
|
||||
intval(local_user())
|
||||
);
|
||||
if(! count($r)) {
|
||||
q("INSERT INTO `mailacct` (`uid`) VALUES (%d)",
|
||||
intval(local_user())
|
||||
);
|
||||
}
|
||||
if(strlen($mail_pass)) {
|
||||
$pass = '';
|
||||
openssl_public_encrypt($mail_pass,$pass,$a->user['pubkey']);
|
||||
q("UPDATE `mailacct` SET `pass` = '%s' WHERE `uid` = %d LIMIT 1",
|
||||
dbesc(bin2hex($pass)),
|
||||
intval(local_user())
|
||||
);
|
||||
}
|
||||
$r = q("UPDATE `mailacct` SET `server` = '%s', `port` = %d, `ssltype` = '%s', `user` = '%s',
|
||||
`mailbox` = 'INBOX', `reply_to` = '%s', `pubmail` = %d WHERE `uid` = %d LIMIT 1",
|
||||
dbesc($mail_server),
|
||||
intval($mail_port),
|
||||
dbesc($mail_ssl),
|
||||
dbesc($mail_user),
|
||||
dbesc($mail_replyto),
|
||||
intval($mail_pubmail),
|
||||
intval(local_user())
|
||||
);
|
||||
}
|
||||
|
||||
$notify = 0;
|
||||
|
||||
@@ -139,7 +182,7 @@ function settings_post(&$a) {
|
||||
$openidserver = '';
|
||||
}
|
||||
|
||||
$r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d, `openidserver` = '%s' WHERE `uid` = %d LIMIT 1",
|
||||
$r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `blockwall` = %d WHERE `uid` = %d LIMIT 1",
|
||||
dbesc($username),
|
||||
dbesc($email),
|
||||
dbesc($openid),
|
||||
@@ -154,7 +197,9 @@ function settings_post(&$a) {
|
||||
intval($allow_location),
|
||||
dbesc($theme),
|
||||
intval($maxreq),
|
||||
intval($expire),
|
||||
dbesc($openidserver),
|
||||
intval($blockwall),
|
||||
intval(local_user())
|
||||
);
|
||||
if($r)
|
||||
@@ -238,11 +283,34 @@ function settings_content(&$a) {
|
||||
$defloc = $a->user['default-location'];
|
||||
$openid = $a->user['openid'];
|
||||
$maxreq = $a->user['maxreq'];
|
||||
$expire = ((intval($a->user['expire'])) ? $a->user['expire'] : '');
|
||||
$blockwall = $a->user['blockwall'];
|
||||
|
||||
if(! strlen($a->user['timezone']))
|
||||
$timezone = date_default_timezone_get();
|
||||
|
||||
$pageset_tpl = load_view_file('view/pagetypes.tpl');
|
||||
|
||||
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
|
||||
|
||||
if(! $mail_disabled) {
|
||||
$r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
|
||||
local_user()
|
||||
);
|
||||
}
|
||||
else {
|
||||
$r = null;
|
||||
$imap_disabled = (($mail_disabled) ? ' disabled="disabled" ' : '');
|
||||
}
|
||||
|
||||
$mail_server = ((count($r)) ? $r[0]['server'] : '');
|
||||
$mail_port = ((count($r) && intval($r[0]['port'])) ? intval($r[0]['port']) : '');
|
||||
$mail_ssl = ((count($r)) ? $r[0]['ssltype'] : '');
|
||||
$mail_user = ((count($r)) ? $r[0]['user'] : '');
|
||||
$mail_replyto = ((count($r)) ? $r[0]['reply_to'] : '');
|
||||
$mail_pubmail = ((count($r)) ? $r[0]['pubmail'] : 0);
|
||||
|
||||
|
||||
$pageset_tpl = get_markup_template('pagetypes.tpl');
|
||||
$pagetype = replace_macros($pageset_tpl,array(
|
||||
'$normal' => (($a->user['page-flags'] == PAGE_NORMAL) ? " checked=\"checked\" " : ""),
|
||||
'$soapbox' => (($a->user['page-flags'] == PAGE_SOAPBOX) ? " checked=\"checked\" " : ""),
|
||||
@@ -251,7 +319,15 @@ function settings_content(&$a) {
|
||||
'$page_normal' => PAGE_NORMAL,
|
||||
'$page_soapbox' => PAGE_SOAPBOX,
|
||||
'$page_community' => PAGE_COMMUNITY,
|
||||
'$page_freelove' => PAGE_FREELOVE
|
||||
'$page_freelove' => PAGE_FREELOVE,
|
||||
'$n_l' => t('Normal Account'),
|
||||
'$n_d' => t('This account is a normal personal profile'),
|
||||
'$s_l' => t('Soapbox Account'),
|
||||
'$s_d' => t('Automatically approve all connection/friend requests as read-only fans'),
|
||||
'$c_l' => t('Community/Celebrity Account'),
|
||||
'$c_d' => t('Automatically approve all connection/friend requests as read-write fans'),
|
||||
'$f_l' => t('Automatic Friend Account'),
|
||||
'$f_d' => t('Automatically approve all connection/friend requests as friends')
|
||||
));
|
||||
|
||||
$noid = get_config('system','no_openid');
|
||||
@@ -268,17 +344,23 @@ function settings_content(&$a) {
|
||||
$profile_in_dir = '<input type="hidden" name="profile_in_directory" value="1" />';
|
||||
}
|
||||
else {
|
||||
$opt_tpl = load_view_file("view/profile-in-directory.tpl");
|
||||
$opt_tpl = get_markup_template("profile-in-directory.tpl");
|
||||
$profile_in_dir = replace_macros($opt_tpl,array(
|
||||
'$desc' => t('Publish your default profile in site directory?'),
|
||||
'$yes_str' => t('Yes'),
|
||||
'$no_str' => t('No'),
|
||||
'$yes_selected' => (($profile['publish']) ? " checked=\"checked\" " : ""),
|
||||
'$no_selected' => (($profile['publish'] == 0) ? " checked=\"checked\" " : "")
|
||||
));
|
||||
}
|
||||
|
||||
if(strlen(get_config('system','directory_submit_url'))) {
|
||||
$opt_tpl = load_view_file("view/profile-in-netdir.tpl");
|
||||
$opt_tpl = get_markup_template("profile-in-netdir.tpl");
|
||||
|
||||
$profile_in_net_dir = replace_macros($opt_tpl,array(
|
||||
'$desc' => t('Publish your default profile in global social directory?'),
|
||||
'$yes_str' => t('Yes'),
|
||||
'$no_str' => t('No'),
|
||||
'$yes_selected' => (($profile['net-publish']) ? " checked=\"checked\" " : ""),
|
||||
'$no_selected' => (($profile['net-publish'] == 0) ? " checked=\"checked\" " : "")
|
||||
));
|
||||
@@ -294,18 +376,7 @@ function settings_content(&$a) {
|
||||
if($invisible)
|
||||
notice( t('Profile is <strong>not published</strong>.') . EOL );
|
||||
|
||||
$nickname_block = load_view_file("view/settings_nick_set.tpl");
|
||||
|
||||
$nickname_subdir = '';
|
||||
if(strlen($a->get_path())) {
|
||||
$subdir_tpl = load_view_file('view/settings_nick_subdir.tpl');
|
||||
$nickname_subdir = replace_macros($subdir_tpl, array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$nickname' => $nickname,
|
||||
'$hostname' => $a->get_hostname()
|
||||
));
|
||||
}
|
||||
|
||||
$theme_selector = '<select name="theme" id="theme-select" >';
|
||||
$files = glob('view/theme/*');
|
||||
|
||||
@@ -321,28 +392,64 @@ function settings_content(&$a) {
|
||||
$theme_selector .= '<option val="' . basename($file) . '"' . $selected . '>' . basename($file) . '</option>';
|
||||
}
|
||||
}
|
||||
|
||||
$theme_selector .= '</select>';
|
||||
|
||||
$subdir = ((strlen($a->get_path())) ? '<br />' . t('or') . ' ' . $a->get_baseurl() . '/profile/' . $nickname : '');
|
||||
|
||||
$nickname_block = replace_macros($nickname_block,array(
|
||||
$tpl_addr = get_markup_template("settings_nick_set.tpl");
|
||||
|
||||
$prof_addr = replace_macros($tpl_addr,array(
|
||||
'$desc' => t('Your Identity Address is'),
|
||||
'$nickname' => $nickname,
|
||||
'$uid' => local_user(),
|
||||
'$subdir' => $nickname_subdir,
|
||||
'$basepath' => $a->get_hostname(),
|
||||
'$baseurl' => $a->get_baseurl()));
|
||||
'$subdir' => $subdir,
|
||||
'$basepath' => $a->get_hostname()
|
||||
));
|
||||
|
||||
$stpl = load_view_file('view/settings.tpl');
|
||||
$stpl = get_markup_template('settings.tpl');
|
||||
|
||||
$celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false);
|
||||
|
||||
$uexport = '<div id="uexport-link"><a href="uexport" >' . t('Export Personal Data') . '</a></div>';
|
||||
|
||||
|
||||
$o .= replace_macros($stpl,array(
|
||||
'$ptitle' => t('Account Settings'),
|
||||
'$lbl_plug' => t('Plugin Settings'),
|
||||
'$lbl_basic' => t('Basic Settings'),
|
||||
'$lbl_fn' => t('Full Name:'),
|
||||
'$lbl_email' => t('Email Address:'),
|
||||
'$lbl_tz' => t('Your Timezone:'),
|
||||
'$lbl_loc1' => t('Default Post Location:'),
|
||||
'$lbl_loc2' => t('Use Browser Location:'),
|
||||
'$lbl_theme' => t('Display Theme:'),
|
||||
'$submit' => t('Submit'),
|
||||
'$lbl_prv' => t('Security and Privacy Settings'),
|
||||
'$lbl_maxreq' => t('Maximum Friend Requests/Day:'),
|
||||
'$lbl_maxrdesc' => t("\x28to prevent spam abuse\x29"),
|
||||
'$lbl_rempost' => t('Allow friends to post to your profile page:'),
|
||||
'$lbl_exp1' => t("Automatically expire \x28delete\x29 posts older than"),
|
||||
'$lbl_exp2' => t('days'),
|
||||
'$lbl_not1' => t('Notification Settings'),
|
||||
'$lbl_not2' => t('Send a notification email when:'),
|
||||
'$lbl_not3' => t('You receive an introduction'),
|
||||
'$lbl_not4' => t('Your introductions are confirmed'),
|
||||
'$lbl_not5' => t('Someone writes on your profile wall'),
|
||||
'$lbl_not6' => t('Someone writes a followup comment'),
|
||||
'$lbl_not7' => t('You receive a private message'),
|
||||
'$lbl_pass1' => t('Password Settings'),
|
||||
'$lbl_pass2' => t('Leave password fields blank unless changing'),
|
||||
'$lbl_pass3' => t('New Password:'),
|
||||
'$lbl_pass4' => t('Confirm:'),
|
||||
'$lbl_advn' => t('Advanced Page Settings'),
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$oidhtml' => $oidhtml,
|
||||
'$uexport' => $uexport,
|
||||
'$uid' => local_user(),
|
||||
'$username' => $username,
|
||||
'$openid' => $openid,
|
||||
'$email' => $email,
|
||||
'$nickname_block' => $nickname_block,
|
||||
'$nickname_block' => $prof_addr,
|
||||
'$timezone' => $timezone,
|
||||
'$zoneselect' => select_timezone($timezone),
|
||||
'$defloc' => $defloc,
|
||||
@@ -350,6 +457,7 @@ function settings_content(&$a) {
|
||||
'$profile_in_dir' => $profile_in_dir,
|
||||
'$profile_in_net_dir' => $profile_in_net_dir,
|
||||
'$permissions' => t('Default Post Permissions'),
|
||||
'$permdesc' => t("\x28click to open/close\x29"),
|
||||
'$visibility' => $profile['net-publish'],
|
||||
'$aclselect' => populate_acl($a->user,$celeb),
|
||||
'$sel_notify1' => (($notify & NOTIFY_INTRO) ? ' checked="checked" ' : ''),
|
||||
@@ -358,8 +466,27 @@ function settings_content(&$a) {
|
||||
'$sel_notify4' => (($notify & NOTIFY_COMMENT) ? ' checked="checked" ' : ''),
|
||||
'$sel_notify5' => (($notify & NOTIFY_MAIL) ? ' checked="checked" ' : ''),
|
||||
'$maxreq' => $maxreq,
|
||||
'$expire' => $expire,
|
||||
'$blockw_checked' => (($blockwall) ? '' : ' checked="checked" ' ),
|
||||
'$theme' => $theme_selector,
|
||||
'$pagetype' => $pagetype
|
||||
'$pagetype' => $pagetype,
|
||||
'$lbl_imap0' => t('Email/Mailbox Setup'),
|
||||
'$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."),
|
||||
'$lbl_imap1' => t('IMAP server name:'),
|
||||
'$imap_server' => $mail_server,
|
||||
'$lbl_imap2' => t('IMAP port:'),
|
||||
'$imap_port' => $mail_port,
|
||||
'$lbl_imap3' => t("Security \x28TLS or SSL\x29:"),
|
||||
'$imap_ssl' => $mail_ssl,
|
||||
'$lbl_imap4' => t('Email login name:'),
|
||||
'$imap_user' => $mail_user,
|
||||
'$lbl_imap5' => t('Email password:'),
|
||||
'$lbl_imap6' => t("Reply-to address \x28Optional\x29:"),
|
||||
'$imap_replyto' => $mail_replyto,
|
||||
'$lbl_imap7' => t('Send public posts to all email contacts:'),
|
||||
'$pubmail_checked' => (($mail_pubmail) ? ' checked="checked" ' : ''),
|
||||
'$mail_disabled' => (($mail_disabled) ? '<div class="error-message">' . t('Email access is disabled on this site.') . '</div>' : ''),
|
||||
'$imap_disabled' => $imap_disabled
|
||||
));
|
||||
|
||||
call_hooks('settings_form',$o);
|
||||
|
||||
23
mod/share.php
Normal file
23
mod/share.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
require_once('bbcode.php');
|
||||
|
||||
function share_init(&$a) {
|
||||
|
||||
$post_id = (($a->argc > 1) ? intval($a->argv[1]) : 0);
|
||||
if((! $post_id) || (! local_user()))
|
||||
killme();
|
||||
|
||||
$r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1",
|
||||
intval($post_id)
|
||||
);
|
||||
if(! count($r) || $r[0]['private'])
|
||||
killme();
|
||||
|
||||
$o = '';
|
||||
|
||||
$o .= '♲ <a href="' . $r[0]['author-link'] . '">' . $r[0]['author-name'] . '</a><br />';
|
||||
$o .= bbcode($r[0]['body'], true);
|
||||
echo $o . '<br />';
|
||||
killme();
|
||||
}
|
||||
72
mod/uexport.php
Normal file
72
mod/uexport.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
function uexport_init(&$a) {
|
||||
|
||||
if(! local_user())
|
||||
killme();
|
||||
|
||||
$user = array();
|
||||
$r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
|
||||
local_user()
|
||||
);
|
||||
if(count($r)) {
|
||||
foreach($r as $rr)
|
||||
foreach($rr as $k => $v)
|
||||
$user[$k] = $v;
|
||||
|
||||
}
|
||||
$contact = array();
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d ",
|
||||
intval(local_user())
|
||||
);
|
||||
if(count($r)) {
|
||||
foreach($r as $rr)
|
||||
foreach($rr as $k => $v)
|
||||
$contact[][$k] = $v;
|
||||
|
||||
}
|
||||
|
||||
$profile = array();
|
||||
$r = q("SELECT * FROM `profile` WHERE `uid` = %d ",
|
||||
intval(local_user())
|
||||
);
|
||||
if(count($r)) {
|
||||
foreach($r as $rr)
|
||||
foreach($rr as $k => $v)
|
||||
$profile[][$k] = $v;
|
||||
}
|
||||
|
||||
$output = array('user' => $user, 'contact' => $contact, 'profile' => $profile );
|
||||
|
||||
header("Content-type: application/json");
|
||||
echo str_replace('\\/','/',json_encode($output));
|
||||
|
||||
$r = q("SELECT count(*) as `total` FROM `item` WHERE `uid` = %d ",
|
||||
intval(local_user())
|
||||
);
|
||||
if(count($r))
|
||||
$total = $r[0]['total'];
|
||||
|
||||
// chunk the output to avoid exhausting memory
|
||||
|
||||
for($x = 0; $x < $total; $x += 500) {
|
||||
$item = array();
|
||||
$r = q("SELECT * FROM `item` WHERE `uid` = %d LIMIT %d, %d",
|
||||
intval(local_user()),
|
||||
intval($x),
|
||||
intval(500)
|
||||
);
|
||||
if(count($r)) {
|
||||
foreach($r as $rr)
|
||||
foreach($rr as $k => $v)
|
||||
$item[][$k] = $v;
|
||||
}
|
||||
|
||||
$output = array('item' => $item);
|
||||
echo str_replace('\\/','/',json_encode($output));
|
||||
}
|
||||
|
||||
|
||||
killme();
|
||||
|
||||
}
|
||||
@@ -19,6 +19,17 @@ function update_network_content(&$a) {
|
||||
$replace = "<img\${1} dst=\"\${2}\"";
|
||||
$text = preg_replace($pattern, $replace, $text);
|
||||
|
||||
$replace = '<br />' . t('[Embedded content - reload page to view]') . '<br />';
|
||||
$pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
|
||||
$text = preg_replace($pattern, $replace, $text);
|
||||
$pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
|
||||
$text = preg_replace($pattern, $replace, $text);
|
||||
$pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
|
||||
$text = preg_replace($pattern, $replace, $text);
|
||||
$pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
|
||||
$text = preg_replace($pattern, $replace, $text);
|
||||
|
||||
|
||||
echo str_replace("\t",' ',$text);
|
||||
echo (($_GET['msie'] == 1) ? '</div>' : '</section>');
|
||||
echo "</body></html>\r\n";
|
||||
|
||||
@@ -38,6 +38,16 @@ function update_profile_content(&$a) {
|
||||
$replace = "<img\${1} dst=\"\${2}\"";
|
||||
$text = preg_replace($pattern, $replace, $text);
|
||||
|
||||
$replace = '<br />' . t('[Embedded content - reload page to view]') . '<br />';
|
||||
$pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
|
||||
$text = preg_replace($pattern, $replace, $text);
|
||||
$pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
|
||||
$text = preg_replace($pattern, $replace, $text);
|
||||
$pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
|
||||
$text = preg_replace($pattern, $replace, $text);
|
||||
$pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
|
||||
$text = preg_replace($pattern, $replace, $text);
|
||||
|
||||
/**
|
||||
* reportedly some versions of MSIE don't handle tabs in XMLHttpRequest documents very well
|
||||
*/
|
||||
|
||||
@@ -2,13 +2,21 @@
|
||||
|
||||
function viewcontacts_init(&$a) {
|
||||
|
||||
profile_load($a,$a->argv[1]);
|
||||
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
|
||||
return;
|
||||
}
|
||||
|
||||
profile_load($a,$a->argv[1]);
|
||||
}
|
||||
|
||||
|
||||
function viewcontacts_content(&$a) {
|
||||
|
||||
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
|
||||
notice( t('Public access denied.') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
if(((! count($a->profile)) || ($a->profile['hide-friends']))) {
|
||||
notice( t('Permission denied.') . EOL);
|
||||
return;
|
||||
@@ -33,7 +41,7 @@ function viewcontacts_content(&$a) {
|
||||
return $o;
|
||||
}
|
||||
|
||||
$tpl = load_view_file("view/viewcontact_template.tpl");
|
||||
$tpl = get_markup_template("viewcontact_template.tpl");
|
||||
|
||||
foreach($r as $rr) {
|
||||
if($rr['self'])
|
||||
@@ -41,9 +49,10 @@ function viewcontacts_content(&$a) {
|
||||
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$id' => $rr['id'],
|
||||
'$alt_text' => t('Visit ') . $rr['name'] . t('\'s profile'),
|
||||
'$alt_text' => t('Visit $username\'s profile'),
|
||||
'$thumb' => $rr['thumb'],
|
||||
'$name' => substr($rr['name'],0,20),
|
||||
'$username' => $rr['name'],
|
||||
'$url' => $rr['url']
|
||||
));
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ function wall_upload_post(&$a) {
|
||||
$maximagesize = get_config('system','maximagesize');
|
||||
|
||||
if(($maximagesize) && ($filesize > $maximagesize)) {
|
||||
notice( t('Image exceeds size limit of ') . $maximagesize . EOL);
|
||||
notice( sprintf(t('Image exceeds size limit of %d'), $maximagesize) . EOL);
|
||||
@unlink($src);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ function xrd_content(&$a) {
|
||||
|
||||
header("Content-type: text/xml");
|
||||
|
||||
$tpl = load_view_file('view/xrd_person.tpl');
|
||||
$tpl = file_get_contents('view/xrd_person.tpl');
|
||||
|
||||
$o = replace_macros($tpl, array(
|
||||
'$accturi' => $uri,
|
||||
|
||||
Reference in New Issue
Block a user