Example #1
0
function rate_init(&$a)
{
    if (!local_channel()) {
        return;
    }
    $channel = App::get_channel();
    $target = $_REQUEST['target'];
    if (!$target) {
        return;
    }
    App::$data['target'] = $target;
    if ($target) {
        $r = q("SELECT * FROM xchan where xchan_hash like '%s' LIMIT 1", dbesc($target));
        if ($r) {
            App::$poi = $r[0];
        } else {
            $r = q("select * from site where site_url like '%s' and site_type = %d", dbesc('%' . $target), intval(SITE_TYPE_ZOT));
            if ($r) {
                App::$data['site'] = $r[0];
                App::$data['site']['site_url'] = strtolower($r[0]['site_url']);
            }
        }
    }
    return;
}
Example #2
0
 function init()
 {
     if (get_config('system', 'block_public') && !local_channel() && !remote_channel()) {
         return;
     }
     if (local_channel()) {
         load_contact_links(local_channel());
     }
     $dirmode = intval(get_config('system', 'directory_mode'));
     $x = find_upstream_directory($dirmode);
     if ($x) {
         $url = $x['url'];
     }
     $poco_rating = get_config('system', 'poco_rating_enable');
     // if unset default to enabled
     if ($poco_rating === false) {
         $poco_rating = true;
     }
     if (!$poco_rating) {
         return;
     }
     if (argc() > 1) {
         $hash = argv(1);
     }
     if (!$hash) {
         notice('Must supply a channel identififier.');
         return;
     }
     $results = false;
     $x = z_fetch_url($url . '/ratingsearch/' . urlencode($hash));
     if ($x['success']) {
         $results = json_decode($x['body'], true);
     }
     if (!$results || !$results['success']) {
         notice('No results.');
         return;
     }
     if (array_key_exists('xchan_hash', $results['target'])) {
         \App::$poi = $results['target'];
     }
     $friends = array();
     $others = array();
     if ($results['ratings']) {
         foreach ($results['ratings'] as $n) {
             if (is_array(\App::$contacts) && array_key_exists($n['xchan_hash'], \App::$contacts)) {
                 $friends[] = $n;
             } else {
                 $others[] = $n;
             }
         }
     }
     \App::$data = array('target' => $results['target'], 'results' => array_merge($friends, $others));
     if (!\App::$data['results']) {
         notice(t('No ratings') . EOL);
     }
     return;
 }
Example #3
0
 function get()
 {
     $observer = \App::get_observer();
     $xchan = null;
     $r = null;
     if ($_REQUEST['hash']) {
         $r = q("select * from xchan where xchan_hash = '%s' limit 1", dbesc($_REQUEST['hash']));
     }
     if ($_REQUEST['address']) {
         $r = q("select * from xchan where xchan_addr = '%s' limit 1", dbesc($_REQUEST['address']));
     } elseif (local_channel() && intval($_REQUEST['cid'])) {
         $r = q("SELECT abook.*, xchan.* \n\t\t\t\tFROM abook left join xchan on abook_xchan = xchan_hash\n\t\t\t\tWHERE abook_channel = %d and abook_id = %d LIMIT 1", intval(local_channel()), intval($_REQUEST['cid']));
     } elseif ($_REQUEST['url']) {
         // if somebody re-installed they will have more than one xchan, use the most recent name date as this is
         // the most useful consistently ascending table item we have.
         $r = q("select * from xchan where xchan_url = '%s' order by xchan_name_date desc limit 1", dbesc($_REQUEST['url']));
     }
     if ($r) {
         \App::$poi = $r[0];
     }
     // Here, let's see if we have an xchan. If we don't, how we proceed is determined by what
     // info we do have. If it's a URL, we can offer to visit it directly. If it's a webbie or
     // address, we can and should try to import it. If it's just a hash, we can't continue, but we
     // probably wouldn't have a hash if we don't already have an xchan for this channel.
     if (!\App::$poi) {
         logger('mod_chanview: fallback');
         // This is hackish - construct a zot address from the url
         if ($_REQUEST['url']) {
             if (preg_match('/https?\\:\\/\\/(.*?)(\\/channel\\/|\\/profile\\/)(.*?)$/ism', $_REQUEST['url'], $matches)) {
                 $_REQUEST['address'] = $matches[3] . '@' . $matches[1];
             }
             logger('mod_chanview: constructed address ' . print_r($matches, true));
         }
         if ($_REQUEST['address']) {
             $ret = zot_finger($_REQUEST['address'], null);
             if ($ret['success']) {
                 $j = json_decode($ret['body'], true);
                 if ($j) {
                     import_xchan($j);
                 }
                 $r = q("select * from xchan where xchan_addr = '%s' limit 1", dbesc($_REQUEST['address']));
                 if ($r) {
                     \App::$poi = $r[0];
                 }
             }
         }
     }
     if (!\App::$poi) {
         //		We don't know who this is, and we can't figure it out from the URL
         //		On the plus side, there's a good chance we know somebody else at that
         //		hub so sending them there with a Zid will probably work anyway.
         $url = $_REQUEST['url'];
         if ($observer) {
             $url = zid($url);
         }
     }
     if (\App::$poi) {
         $url = \App::$poi['xchan_url'];
         if ($observer) {
             $url = zid($url);
         }
     }
     // let somebody over-ride the iframed viewport presentation
     // or let's just declare this a failed experiment.
     //	if((! local_channel()) || (get_pconfig(local_channel(),'system','chanview_full')))
     goaway($url);
     //	$o = replace_macros(get_markup_template('chanview.tpl'),array(
     //		'$url' => $url,
     //		'$full' => t('toggle full screen mode')
     //	));
     //	return $o;
 }
Example #4
0
function mail_content(&$a)
{
    $o = '';
    nav_set_selected('messages');
    if (!local_channel()) {
        notice(t('Permission denied.') . EOL);
        return login();
    }
    $channel = App::get_channel();
    head_set_icon($channel['xchan_photo_s']);
    $cipher = get_pconfig(local_channel(), 'system', 'default_cipher');
    if (!$cipher) {
        $cipher = 'aes256';
    }
    $tpl = get_markup_template('mail_head.tpl');
    $header = replace_macros($tpl, array('$header' => t('Messages')));
    if (argc() == 4 && argv(2) === 'drop') {
        if (!intval(argv(3))) {
            return;
        }
        $cmd = argv(2);
        $mailbox = argv(1);
        $r = private_messages_drop(local_channel(), argv(3));
        if ($r) {
            //info( t('Message deleted.') . EOL );
        }
        goaway(z_root() . '/mail/' . $mailbox);
    }
    if (argc() == 4 && argv(2) === 'recall') {
        if (!intval(argv(3))) {
            return;
        }
        $cmd = argv(2);
        $mailbox = argv(1);
        $r = q("update mail set mail_recalled = 1 where id = %d and channel_id = %d", intval(argv(3)), intval(local_channel()));
        $x = q("select * from mail where id = %d and channel_id = %d", intval(argv(3)), intval(local_channel()));
        if ($x) {
            build_sync_packet(local_channel(), array('mail' => encode_mail($x[0], true)));
        }
        proc_run('php', 'include/notifier.php', 'mail', intval(argv(3)));
        if ($r) {
            info(t('Message recalled.') . EOL);
        }
        goaway(z_root() . '/mail/' . $mailbox . '/' . argv(3));
    }
    if (argc() == 4 && argv(2) === 'dropconv') {
        if (!intval(argv(3))) {
            return;
        }
        $cmd = argv(2);
        $mailbox = argv(1);
        $r = private_messages_drop(local_channel(), argv(3), true);
        if ($r) {
            info(t('Conversation removed.') . EOL);
        }
        goaway(z_root() . '/mail/' . $mailbox);
    }
    if (argc() > 1 && argv(1) === 'new') {
        $plaintext = true;
        $tpl = get_markup_template('msg-header.tpl');
        $header = replace_macros($tpl, array('$baseurl' => z_root(), '$editselect' => $plaintext ? 'none' : '/(profile-jot-text|prvmail-text)/', '$nickname' => $channel['channel_address'], '$linkurl' => t('Please enter a link URL:'), '$expireswhen' => t('Expires YYYY-MM-DD HH:MM')));
        App::$page['htmlhead'] .= $header;
        $prename = '';
        $preid = '';
        if (x($_REQUEST, 'hash')) {
            $r = q("select abook.*, xchan.* from abook left join xchan on abook_xchan = xchan_hash\n\t\t\t\twhere abook_channel = %d and abook_xchan = '%s' limit 1", intval(local_channel()), dbesc($_REQUEST['hash']));
            if (!$r) {
                $r = q("select * from xchan where xchan_hash = '%s' and xchan_network = 'zot' limit 1", dbesc($_REQUEST['hash']));
            }
            if ($r) {
                $prename = $r[0]['abook_id'] ? $r[0]['xchan_name'] : $r[0]['xchan_addr'];
                $preurl = $r[0]['xchan_url'];
                $preid = $r[0]['abook_id'] ? $r[0]['xchan_hash'] : '';
            } else {
                notice(t('Requested channel is not in this network') . EOL);
            }
        }
        $tpl = get_markup_template('prv_message.tpl');
        $o .= replace_macros($tpl, array('$new' => true, '$header' => t('Send Private Message'), '$to' => t('To:'), '$prefill' => $prename, '$preid' => $preid, '$subject' => t('Subject:'), '$subjtxt' => x($_REQUEST, 'subject') ? strip_tags($_REQUEST['subject']) : '', '$text' => x($_REQUEST, 'body') ? htmlspecialchars($_REQUEST['body'], ENT_COMPAT, 'UTF-8') : '', '$yourmessage' => t('Your message:'), '$parent' => '', '$attach' => t('Attach file'), '$insert' => t('Insert web link'), '$submit' => t('Send'), '$defexpire' => '', '$feature_expire' => feature_enabled(local_channel(), 'content_expire') ? true : false, '$expires' => t('Set expiration date'), '$feature_encrypt' => feature_enabled(local_channel(), 'content_encrypt') ? true : false, '$encrypt' => t('Encrypt text'), '$cipher' => $cipher));
        return $o;
    }
    switch (argv(1)) {
        case 'combined':
            $mailbox = 'combined';
            break;
        case 'inbox':
            $mailbox = 'inbox';
            break;
        case 'outbox':
            $mailbox = 'outbox';
            break;
        default:
            $mailbox = 'combined';
            break;
    }
    $last_message = private_messages_list(local_channel(), $mailbox, 0, 1);
    $mid = argc() > 2 && intval(argv(2)) ? argv(2) : $last_message[0]['id'];
    $plaintext = true;
    //	if( local_channel() && feature_enabled(local_channel(),'richtext') )
    //		$plaintext = false;
    if ($mailbox == 'combined') {
        $messages = private_messages_fetch_conversation(local_channel(), $mid, true);
    } else {
        $messages = private_messages_fetch_message(local_channel(), $mid, true);
    }
    if (!$messages) {
        //info( t('Message not found.') . EOL);
        return;
    }
    if ($messages[0]['to_xchan'] === $channel['channel_hash']) {
        App::$poi = $messages[0]['from'];
    } else {
        App::$poi = $messages[0]['to'];
    }
    //	require_once('include/Contact.php');
    //	App::set_widget('mail_conversant',vcard_from_xchan(App::$poi,$get_observer_hash,'mail'));
    $tpl = get_markup_template('msg-header.tpl');
    App::$page['htmlhead'] .= replace_macros($tpl, array('$nickname' => $channel['channel_address'], '$baseurl' => z_root(), '$editselect' => $plaintext ? 'none' : '/(profile-jot-text|prvmail-text)/', '$linkurl' => t('Please enter a link URL:'), '$expireswhen' => t('Expires YYYY-MM-DD HH:MM')));
    $mails = array();
    $seen = 0;
    $unknown = false;
    foreach ($messages as $message) {
        $s = theme_attachments($message);
        $mails[] = array('mailbox' => $mailbox, 'id' => $message['id'], 'mid' => $message['mid'], 'from_name' => $message['from']['xchan_name'], 'from_url' => chanlink_hash($message['from_xchan']), 'from_photo' => $message['from']['xchan_photo_s'], 'to_name' => $message['to']['xchan_name'], 'to_url' => chanlink_hash($message['to_xchan']), 'to_photo' => $message['to']['xchan_photo_s'], 'subject' => $message['title'], 'body' => smilies(bbcode($message['body'])), 'attachments' => $s, 'delete' => t('Delete message'), 'dreport' => t('Delivery report'), 'recall' => t('Recall message'), 'can_recall' => $channel['channel_hash'] == $message['from_xchan'] ? true : false, 'is_recalled' => intval($message['mail_recalled']) ? t('Message has been recalled.') : '', 'date' => datetime_convert('UTC', date_default_timezone_get(), $message['created'], 'c'));
        $seen = $message['seen'];
    }
    $recp = $message['from_xchan'] === $channel['channel_hash'] ? 'to' : 'from';
    $tpl = get_markup_template('mail_display.tpl');
    $o = replace_macros($tpl, array('$mailbox' => $mailbox, '$prvmsg_header' => $message['title'], '$thread_id' => $mid, '$thread_subject' => $message['title'], '$thread_seen' => $seen, '$delete' => t('Delete Conversation'), '$canreply' => $unknown ? false : '1', '$unknown_text' => t("No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."), '$mails' => $mails, '$header' => t('Send Reply'), '$to' => t('To:'), '$reply' => true, '$subject' => t('Subject:'), '$subjtxt' => $message['title'], '$yourmessage' => sprintf(t('Your message for %s (%s):'), $message[$recp]['xchan_name'], $message[$recp]['xchan_addr']), '$text' => '', '$parent' => $message['parent_mid'], '$recphash' => $message[$recp]['xchan_hash'], '$attach' => t('Attach file'), '$insert' => t('Insert web link'), '$submit' => t('Submit'), '$defexpire' => '', '$feature_expire' => feature_enabled(local_channel(), 'content_expire') ? true : false, '$expires' => t('Set expiration date'), '$feature_encrypt' => feature_enabled(local_channel(), 'content_encrypt') ? true : false, '$encrypt' => t('Encrypt text'), '$cipher' => $cipher));
    return $o;
}
Example #5
0
 function connedit_clone(&$a)
 {
     if (!\App::$poi) {
         return;
     }
     $channel = \App::get_channel();
     $r = q("SELECT abook.*, xchan.*\n\t\t\t\tFROM abook left join xchan on abook_xchan = xchan_hash\n\t\t\t\tWHERE abook_channel = %d and abook_id = %d LIMIT 1", intval(local_channel()), intval(\App::$poi['abook_id']));
     if ($r) {
         \App::$poi = $r[0];
     }
     $clone = \App::$poi;
     unset($clone['abook_id']);
     unset($clone['abook_account']);
     unset($clone['abook_channel']);
     $abconfig = load_abconfig($channel['channel_hash'], $clone['abook_xchan']);
     if ($abconfig) {
         $clone['abconfig'] = $abconfig;
     }
     build_sync_packet(0, array('abook' => array($clone)));
 }