function populate_acl($user = null) { $allow_cid = $allow_gid = $deny_cid = $deny_gid = false; if (is_array($user)) { $allow_cid = strlen($user['allow_cid']) ? explode('><', $user['allow_cid']) : array(); $allow_gid = strlen($user['allow_gid']) ? explode('><', $user['allow_gid']) : array(); $deny_cid = strlen($user['deny_cid']) ? explode('><', $user['deny_cid']) : array(); $deny_gid = strlen($user['deny_gid']) ? explode('><', $user['deny_gid']) : array(); array_walk($allow_cid, 'fixacl'); array_walk($allow_gid, 'fixacl'); array_walk($deny_cid, 'fixacl'); array_walk($deny_gid, 'fixacl'); } $o = ''; $o .= '<div id="acl-wrapper">'; $o .= '<div id="acl-permit-outer-wrapper">'; $o .= '<div id="acl-permit-text">' . t('Visible To:') . '</div>'; $o .= '<div id="acl-permit-text-end"></div>'; $o .= '<div id="acl-permit-wrapper">'; $o .= '<div id="group_allow_wrapper">'; $o .= '<label id="acl-allow-group-label" for="group_allow" >' . t('Groups') . '</label>'; $o .= group_select('group_allow', 'group_allow', $allow_gid); $o .= '</div>'; $o .= '<div id="contact_allow_wrapper">'; $o .= '<label id="acl-allow-contact-label" for="contact_allow" >' . t('Contacts') . '</label>'; $o .= contact_select('contact_allow', 'contact_allow', $allow_cid); $o .= '</div>'; $o .= '</div>' . "\r\n"; $o .= '<div id="acl-allow-end"></div>' . "\r\n"; $o .= '</div>'; $o .= '<div id="acl-deny-outer-wrapper">'; $o .= '<div id="acl-deny-text">' . t('Except For:') . '</div>'; $o .= '<div id="acl-deny-text-end"></div>'; $o .= '<div id="acl-deny-wrapper">'; $o .= '<div id="group_deny_wrapper" >'; $o .= '<label id="acl-deny-group-label" for="group_deny" >' . t('Groups') . '</label>'; $o .= group_select('group_deny', 'group_deny', $deny_gid); $o .= '</div>'; $o .= '<div id="contact_deny_wrapper" >'; $o .= '<label id="acl-deny-contact-label" for="contact_deny" >' . t('Contacts') . '</label>'; $o .= contact_select('contact_deny', 'contact_deny', $deny_cid); $o .= '</div>'; $o .= '</div>' . "\r\n"; $o .= '<div id="acl-deny-end"></div>' . "\r\n"; $o .= '</div>'; $o .= '</div>' . "\r\n"; $o .= '<div id="acl-wrapper-end"></div>' . "\r\n"; return $o; }
function mail_content(&$a) { $o = ''; nav_set_selected('messages'); if (!local_user()) { notice(t('Permission denied.') . EOL); return login(); } $channel = $a->get_channel(); head_set_icon($channel['xchan_photo_s']); $cipher = get_pconfig(local_user(), 'system', 'default_cipher'); if (!$cipher) { $cipher = 'aes256'; } $tpl = get_markup_template('mail_head.tpl'); $header = replace_macros($tpl, array('$messages' => t('Messages'), '$tab_content' => $tab_content)); if (argc() == 3 && argv(1) === 'drop') { if (!intval(argv(2))) { return; } $cmd = argv(1); $r = private_messages_drop(local_user(), argv(2)); if ($r) { info(t('Message deleted.') . EOL); } goaway($a->get_baseurl(true) . '/message'); } if (argc() == 3 && argv(1) === 'recall') { if (!intval(argv(2))) { return; } $cmd = argv(1); $r = q("update mail set mail_flags = mail_flags | %d where id = %d and channel_id = %d limit 1", intval(MAIL_RECALLED), intval(argv(2)), intval(local_user())); proc_run('php', 'include/notifier.php', 'mail', intval(argv(2))); if ($r) { info(t('Message recalled.') . EOL); } goaway($a->get_baseurl(true) . '/message'); } if (argc() > 1 && argv(1) === 'new') { $o .= $header; $plaintext = true; $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(true), '$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'))); $preselect = isset($a->argv[2]) ? array($a->argv[2]) : false; $prename = $preurl = $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_user()), dbesc($_REQUEST['hash'])); if ($r) { $prename = $r[0]['xchan_name']; $preurl = $r[0]['xchan_url']; $preid = $r[0]['abook_id']; $preselect = array($preid); } } if ($preselect) { $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_id = %d limit 1", intval(local_user()), intval(argv(2))); if ($r) { $prename = $r[0]['xchan_name']; $preurl = $r[0]['xchan_url']; $preid = $r[0]['abook_id']; } } $prefill = $preselect ? $prename : ''; if (!$prefill) { if (array_key_exists('to', $_REQUEST)) { $prefill = $_REQUEST['to']; } } // the ugly select box $select = contact_select('messageto', 'message-to-select', $preselect, 4, true, false, false, 10); $tpl = get_markup_template('prv_message.tpl'); $o .= replace_macros($tpl, array('$header' => t('Send Private Message'), '$to' => t('To:'), '$showinputs' => 'true', '$prefill' => $prefill, '$autocomp' => $autocomp, '$preid' => $preid, '$subject' => t('Subject:'), '$subjtxt' => x($_REQUEST, 'subject') ? strip_tags($_REQUEST['subject']) : '', '$text' => x($_REQUEST, 'body') ? htmlspecialchars($_REQUEST['body'], ENT_COMPAT, 'UTF-8') : '', '$readonly' => '', '$yourmessage' => t('Your message:'), '$select' => $select, '$parent' => '', '$upload' => t('Upload photo'), '$attach' => t('Attach file'), '$insert' => t('Insert web link'), '$wait' => t('Please wait'), '$submit' => t('Send'), '$defexpire' => '', '$feature_expire' => feature_enabled(local_user(), 'content_expire') ? true : false, '$expires' => t('Set expiration date'), '$feature_encrypt' => feature_enabled(local_user(), 'content_encrypt') ? true : false, '$encrypt' => t('Encrypt text'), '$cipher' => $cipher)); return $o; } if (argc() > 1 && intval(argv(1))) { $o .= $header; $plaintext = true; // if( local_user() && feature_enabled(local_user(),'richtext') ) // $plaintext = false; $messages = private_messages_fetch_conversation(local_user(), argv(1), true); if (!$messages) { info(t('Message not found.') . EOL); return $o; } if ($messages[0]['to_xchan'] === $channel['channel_hash']) { $a->poi = $messages[0]['from']; } else { $a->poi = $messages[0]['to']; } // require_once('include/Contact.php'); // $a->set_widget('mail_conversant',vcard_from_xchan($a->poi,$get_observer_hash,'mail')); $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array('$nickname' => $channel['channel_addr'], '$baseurl' => $a->get_baseurl(true), '$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('id' => $message['id'], 'from_name' => $message['from']['xchan_name'], 'from_url' => chanlink_hash($message['from_xchan']), 'from_photo' => $message['from']['xchan_photo_m'], 'to_name' => $message['to']['xchan_name'], 'to_url' => chanlink_hash($message['to_xchan']), 'to_photo' => $message['to']['xchan_photo_m'], 'subject' => $message['title'], 'body' => smilies(bbcode($message['body']) . $s), 'delete' => t('Delete message'), 'recall' => t('Recall message'), 'can_recall' => $channel['channel_hash'] == $message['from_xchan'] ? true : false, 'is_recalled' => $message['mail_flags'] & MAIL_RECALLED ? t('Message has been recalled.') : '', 'date' => datetime_convert('UTC', date_default_timezone_get(), $message['created'], 'D, d M Y - g:i A')); $seen = $message['seen']; } $recp = $message['from_xchan'] === $channel['channel_hash'] ? 'to' : 'from'; // FIXME - move this HTML to template $select = $message[$recp]['xchan_name'] . '<input type="hidden" name="messageto" value="' . $message[$recp]['xchan_hash'] . '" />'; $parent = '<input type="hidden" name="replyto" value="' . $message['parent_mid'] . '" />'; $tpl = get_markup_template('mail_display.tpl'); $o = replace_macros($tpl, array('$prvmsg_header' => t('Private Conversation'), '$thread_id' => $a->argv[1], '$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:'), '$showinputs' => '', '$subject' => t('Subject:'), '$subjtxt' => $message['title'], '$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ', '$yourmessage' => t('Your message:'), '$text' => '', '$select' => $select, '$parent' => $parent, '$upload' => t('Upload photo'), '$attach' => t('Attach file'), '$insert' => t('Insert web link'), '$submit' => t('Submit'), '$wait' => t('Please wait'), '$defexpire' => '', '$feature_expire' => feature_enabled(local_user(), 'content_expire') ? true : false, '$expires' => t('Set expiration date'), '$feature_encrypt' => feature_enabled(local_user(), 'content_encrypt') ? true : false, '$encrypt' => t('Encrypt text'), '$cipher' => $cipher)); return $o; } }
function message_content(&$a) { $o = ''; nav_set_selected('messages'); if (!local_user()) { notice(t('Permission denied.') . EOL); return; } $myprofile = $a->get_baseurl(true) . '/profile/' . $a->user['nickname']; $tpl = get_markup_template('mail_head.tpl'); $header = replace_macros($tpl, array('$messages' => t('Messages'), '$tab_content' => $tab_content)); if ($a->argc == 3 && ($a->argv[1] === 'drop' || $a->argv[1] === 'dropconv')) { if (!intval($a->argv[2])) { return; } // Check if we should do HTML-based delete confirmation if ($_REQUEST['confirm']) { // <form> can't take arguments in its "action" parameter // so add any arguments as hidden inputs $query = explode_querystring($a->query_string); $inputs = array(); foreach ($query['args'] as $arg) { if (strpos($arg, 'confirm=') === false) { $arg_parts = explode('=', $arg); $inputs[] = array('name' => $arg_parts[0], 'value' => $arg_parts[1]); } } //$a->page['aside'] = ''; return replace_macros(get_markup_template('confirm.tpl'), array('$method' => 'get', '$message' => t('Do you really want to delete this message?'), '$extra_inputs' => $inputs, '$confirm' => t('Yes'), '$confirm_url' => $query['base'], '$confirm_name' => 'confirmed', '$cancel' => t('Cancel'))); } // Now check how the user responded to the confirmation query if ($_REQUEST['canceled']) { goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']); } $cmd = $a->argv[1]; if ($cmd === 'drop') { $r = q("DELETE FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[2]), intval(local_user())); if ($r) { info(t('Message deleted.') . EOL); } //goaway($a->get_baseurl(true) . '/message' ); goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']); } else { $r = q("SELECT `parent-uri`,`convid` FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[2]), intval(local_user())); if (count($r)) { $parent = $r[0]['parent-uri']; $convid = $r[0]['convid']; $r = q("DELETE FROM `mail` WHERE `parent-uri` = '%s' AND `uid` = %d ", dbesc($parent), intval(local_user())); // remove diaspora conversation pointer // Actually if we do this, we can never receive another reply to that conversation, // as we will never again have the info we need to re-create it. // We'll just have to orphan it. //if($convid) { // q("delete from conv where id = %d limit 1", // intval($convid) // ); //} if ($r) { info(t('Conversation removed.') . EOL); } } //goaway($a->get_baseurl(true) . '/message' ); goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']); } } if ($a->argc > 1 && $a->argv[1] === 'new') { $o .= $header; /* $plaintext = false; if(intval(get_pconfig(local_user(),'system','plaintext'))) $plaintext = true;*/ $plaintext = true; if (local_user() && feature_enabled(local_user(), 'richtext')) { $plaintext = false; } $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(true), '$editselect' => $plaintext ? 'none' : '/(profile-jot-text|prvmail-text)/', '$nickname' => $a->user['nickname'], '$linkurl' => t('Please enter a link URL:'))); $tpl = get_markup_template('msg-end.tpl'); $a->page['end'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(true), '$editselect' => $plaintext ? 'none' : '/(profile-jot-text|prvmail-text)/', '$nickname' => $a->user['nickname'], '$linkurl' => t('Please enter a link URL:'))); $preselect = isset($a->argv[2]) ? array($a->argv[2]) : false; $prename = $preurl = $preid = ''; if ($preselect) { $r = q("select name, url, id from contact where uid = %d and id = %d limit 1", intval(local_user()), intval($a->argv[2])); if (count($r)) { $prename = $r[0]['name']; $preurl = $r[0]['url']; $preid = $r[0]['id']; } } $prefill = $preselect ? $prename : ''; // the ugly select box $select = contact_select('messageto', 'message-to-select', $preselect, 4, true, false, false, 10); $tpl = get_markup_template('prv_message.tpl'); $o .= replace_macros($tpl, array('$header' => t('Send Private Message'), '$to' => t('To:'), '$showinputs' => 'true', '$prefill' => $prefill, '$autocomp' => $autocomp, '$preid' => $preid, '$subject' => t('Subject:'), '$subjtxt' => x($_REQUEST, 'subject') ? strip_tags($_REQUEST['subject']) : '', '$text' => x($_REQUEST, 'body') ? escape_tags(htmlspecialchars($_REQUEST['body'])) : '', '$readonly' => '', '$yourmessage' => t('Your message:'), '$select' => $select, '$parent' => '', '$upload' => t('Upload photo'), '$insert' => t('Insert web link'), '$wait' => t('Please wait'), '$submit' => t('Submit'))); return $o; } $_SESSION['return_url'] = $a->query_string; if ($a->argc == 1) { // list messages $o .= $header; $r = q("SELECT count(*) AS `total` FROM `mail`\n\t\t\tWHERE `mail`.`uid` = %d GROUP BY `parent-uri` ORDER BY `created` DESC", intval(local_user()), dbesc($myprofile)); if (count($r)) { $a->set_pager_total($r[0]['total']); } $r = q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`,\n\t\t\t`mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` , `contact`.`network`,\n\t\t\tcount( * ) as count\n\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id`\n\t\t\tWHERE `mail`.`uid` = %d GROUP BY `parent-uri` ORDER BY `mailcreated` DESC LIMIT %d , %d ", intval(local_user()), intval($a->pager['start']), intval($a->pager['itemspage'])); if (!count($r)) { info(t('No messages.') . EOL); return $o; } $tpl = get_markup_template('mail_list.tpl'); foreach ($r as $rr) { if ($rr['unknown']) { $partecipants = sprintf(t("Unknown sender - %s"), $rr['from-name']); } elseif (link_compare($rr['from-url'], $myprofile)) { $partecipants = sprintf(t("You and %s"), $rr['name']); } else { $partecipants = sprintf(t("%s and You"), $rr['from-name']); } if ($a->theme['template_engine'] === 'internal') { $subject_e = template_escape($rr['mailseen'] ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'); $body_e = template_escape($rr['body']); $to_name_e = template_escape($rr['name']); } else { $subject_e = $rr['mailseen'] ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'; $body_e = $rr['body']; $to_name_e = $rr['name']; } $o .= replace_macros($tpl, array('$id' => $rr['id'], '$from_name' => $partecipants, '$from_url' => $rr['network'] === NETWORK_DFRN ? $a->get_baseurl(true) . '/redir/' . $rr['contact-id'] : $rr['url'], '$sparkle' => ' sparkle', '$from_photo' => $rr['thumb'] ? $rr['thumb'] : $rr['from-photo'], '$subject' => $subject_e, '$delete' => t('Delete conversation'), '$body' => $body_e, '$to_name' => $to_name_e, '$date' => datetime_convert('UTC', date_default_timezone_get(), $rr['mailcreated'], t('D, d M Y - g:i A')), '$ago' => relative_date($rr['mailcreated']), '$seen' => $rr['mailseen'], '$count' => sprintf(tt('%d message', '%d messages', $rr['count']), $rr['count']))); } $o .= paginate($a); return $o; } if ($a->argc > 1 && intval($a->argv[1])) { $o .= $header; $plaintext = true; if (local_user() && feature_enabled(local_user(), 'richtext')) { $plaintext = false; } $r = q("SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb`\n\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id`\n\t\t\tWHERE `mail`.`uid` = %d AND `mail`.`id` = %d LIMIT 1", intval(local_user()), intval($a->argv[1])); if (count($r)) { $contact_id = $r[0]['contact-id']; $convid = $r[0]['convid']; $sql_extra = sprintf(" and `mail`.`parent-uri` = '%s' ", dbesc($r[0]['parent-uri'])); if ($convid) { $sql_extra = sprintf(" and ( `mail`.`parent-uri` = '%s' OR `mail`.`convid` = '%d' ) ", dbesc($r[0]['parent-uri']), intval($convid)); } $messages = q("SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb`\n\t\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id`\n\t\t\t\tWHERE `mail`.`uid` = %d {$sql_extra} ORDER BY `mail`.`created` ASC", intval(local_user())); } if (!count($messages)) { notice(t('Message not available.') . EOL); return $o; } $r = q("UPDATE `mail` SET `seen` = 1 WHERE `parent-uri` = '%s' AND `uid` = %d", dbesc($r[0]['parent-uri']), intval(local_user())); require_once "include/bbcode.php"; $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(true), '$editselect' => $plaintext ? 'none' : '/(profile-jot-text|prvmail-text)/', '$nickname' => $a->user['nickname'], '$linkurl' => t('Please enter a link URL:'))); $tpl = get_markup_template('msg-end.tpl'); $a->page['end'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(true), '$editselect' => $plaintext ? 'none' : '/(profile-jot-text|prvmail-text)/', '$nickname' => $a->user['nickname'], '$linkurl' => t('Please enter a link URL:'))); $mails = array(); $seen = 0; $unknown = false; foreach ($messages as $message) { if ($message['unknown']) { $unknown = true; } if ($message['from-url'] == $myprofile) { $from_url = $myprofile; $sparkle = ''; } else { $from_url = $a->get_baseurl(true) . '/redir/' . $message['contact-id']; $sparkle = ' sparkle'; } $extracted = item_extract_images($message['body']); if ($extracted['images']) { $message['body'] = item_redir_and_replace_images($extracted['body'], $extracted['images'], $message['contact-id']); } if ($a->theme['template_engine'] === 'internal') { $from_name_e = template_escape($message['from-name']); $subject_e = template_escape($message['title']); $body_e = template_escape(smilies(bbcode($message['body']))); $to_name_e = template_escape($message['name']); } else { $from_name_e = $message['from-name']; $subject_e = $message['title']; $body_e = smilies(bbcode($message['body'])); $to_name_e = $message['name']; } $mails[] = array('id' => $message['id'], 'from_name' => $from_name_e, 'from_url' => $from_url, 'sparkle' => $sparkle, 'from_photo' => $message['from-photo'], 'subject' => $subject_e, 'body' => $body_e, 'delete' => t('Delete message'), 'to_name' => $to_name_e, 'date' => datetime_convert('UTC', date_default_timezone_get(), $message['created'], 'D, d M Y - g:i A'), 'ago' => relative_date($message['created'])); $seen = $message['seen']; } $select = $message['name'] . '<input type="hidden" name="messageto" value="' . $contact_id . '" />'; $parent = '<input type="hidden" name="replyto" value="' . $message['parent-uri'] . '" />'; $tpl = get_markup_template('mail_display.tpl'); if ($a->theme['template_engine'] === 'internal') { $subjtxt_e = template_escape($message['title']); } else { $subjtxt_e = $message['title']; } $o = replace_macros($tpl, array('$thread_id' => $a->argv[1], '$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:'), '$showinputs' => '', '$subject' => t('Subject:'), '$subjtxt' => $subjtxt_e, '$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ', '$yourmessage' => t('Your message:'), '$text' => '', '$select' => $select, '$parent' => $parent, '$upload' => t('Upload photo'), '$insert' => t('Insert web link'), '$submit' => t('Submit'), '$wait' => t('Please wait'))); return $o; } }
function message_content(&$a) { $o = ''; nav_set_selected('messages'); if (!local_user()) { notice(t('Permission denied.') . EOL); return; } $myprofile = $a->get_baseurl() . '/profile/' . $a->user['nickname']; $tabs = array(array('label' => t('Inbox'), 'url' => $a->get_baseurl() . '/message', 'sel' => $a->argc == 1 ? 'active' : ''), array('label' => t('Outbox'), 'url' => $a->get_baseurl() . '/message/sent', 'sel' => $a->argv[1] == 'sent' ? 'active' : ''), array('label' => t('New Message'), 'url' => $a->get_baseurl() . '/message/new', 'sel' => $a->argv[1] == 'new' ? 'active' : '')); $tpl = get_markup_template('common_tabs.tpl'); $tab_content = replace_macros($tpl, array('$tabs' => $tabs)); $tpl = get_markup_template('mail_head.tpl'); $header = replace_macros($tpl, array('$messages' => t('Messages'), '$tab_content' => $tab_content)); if ($a->argc == 3 && ($a->argv[1] === 'drop' || $a->argv[1] === 'dropconv')) { if (!intval($a->argv[2])) { return; } $cmd = $a->argv[1]; if ($cmd === 'drop') { $r = q("DELETE FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[2]), intval(local_user())); if ($r) { info(t('Message deleted.') . EOL); } goaway($a->get_baseurl() . '/message'); } else { $r = q("SELECT `parent-uri`,`convid` FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[2]), intval(local_user())); if (count($r)) { $parent = $r[0]['parent-uri']; $convid = $r[0]['convid']; $r = q("DELETE FROM `mail` WHERE `parent-uri` = '%s' AND `uid` = %d ", dbesc($parent), intval(local_user())); // remove diaspora conversation pointer // Actually if we do this, we can never receive another reply to that conversation, // as we will never again have the info we need to re-create it. // We'll just have to orphan it. //if($convid) { // q("delete from conv where id = %d limit 1", // intval($convid) // ); //} if ($r) { info(t('Conversation removed.') . EOL); } } goaway($a->get_baseurl() . '/message'); } } if ($a->argc > 1 && $a->argv[1] === 'new') { $o .= $header; $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(), '$nickname' => $a->user['nickname'], '$linkurl' => t('Please enter a link URL:'))); $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:'), '$subject' => t('Subject:'), '$subjtxt' => '', '$readonly' => '', '$yourmessage' => t('Your message:'), '$select' => $select, '$parent' => '', '$upload' => t('Upload photo'), '$insert' => t('Insert web link'), '$wait' => t('Please wait'))); return $o; } if ($a->argc == 1 || $a->argc == 2 && $a->argv[1] === 'sent') { $o .= $header; if ($a->argc == 2) { $eq = '='; } else { $eq = '!='; } // or this. $r = q("SELECT count(*) AS `total` FROM `mail` \n\t\t\tWHERE `mail`.`uid` = %d AND `from-url` {$eq} '%s' GROUP BY `parent-uri` ORDER BY `created` DESC", intval(local_user()), dbesc($myprofile)); if (count($r)) { $a->set_pager_total($r[0]['total']); } $r = q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`, \n\t\t\t`mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` \n\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` \n\t\t\tWHERE `mail`.`uid` = %d AND `from-url` {$eq} '%s' GROUP BY `parent-uri` ORDER BY `created` DESC LIMIT %d , %d ", intval(local_user()), dbesc($myprofile), intval($a->pager['start']), intval($a->pager['itemspage'])); if (!count($r)) { info(t('No messages.') . EOL); return $o; } $tpl = get_markup_template('mail_list.tpl'); foreach ($r as $rr) { $o .= replace_macros($tpl, array('$id' => $rr['id'], '$from_name' => $rr['from-name'], '$from_url' => $rr['network'] === NETWORK_DFRN ? $a->get_baseurl() . '/redir/' . $rr['contact-id'] : $rr['url'], '$sparkle' => ' sparkle', '$from_photo' => $rr['thumb'], '$subject' => template_escape($rr['mailseen'] ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'), '$delete' => t('Delete conversation'), '$body' => template_escape($rr['body']), '$to_name' => template_escape($rr['name']), '$date' => datetime_convert('UTC', date_default_timezone_get(), $rr['mailcreated'], t('D, d M Y - g:i A')))); } $o .= paginate($a); return $o; } if ($a->argc > 1 && intval($a->argv[1])) { $o .= $header; $r = q("SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb` \n\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` \n\t\t\tWHERE `mail`.`uid` = %d AND `mail`.`id` = %d LIMIT 1", intval(local_user()), intval($a->argv[1])); if (count($r)) { $contact_id = $r[0]['contact-id']; $convid = $r[0]['convid']; $sql_extra = sprintf(" and `mail`.`parent-uri` = '%s' ", dbesc($r[0]['parent-uri'])); if ($convid) { $sql_extra = sprintf(" and ( `mail`.`parent-uri` = '%s' OR `mail`.`convid` = '%d' ) ", dbesc($r[0]['parent-uri']), intval($convid)); } $messages = q("SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb` \n\t\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` \n\t\t\t\tWHERE `mail`.`uid` = %d {$sql_extra} ORDER BY `mail`.`created` ASC", intval(local_user())); } if (!count($messages)) { notice(t('Message not available.') . EOL); return $o; } $r = q("UPDATE `mail` SET `seen` = 1 WHERE `parent-uri` = '%s' AND `uid` = %d", dbesc($r[0]['parent-uri']), intval(local_user())); require_once "include/bbcode.php"; $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array('$nickname' => $a->user['nickname'], '$baseurl' => $a->get_baseurl())); $tpl = get_markup_template('mail_conv.tpl'); foreach ($messages as $message) { if ($message['from-url'] == $myprofile) { $from_url = $myprofile; $sparkle = ''; } else { $from_url = $a->get_baseurl() . '/redir/' . $message['contact-id']; $sparkle = ' sparkle'; } $o .= replace_macros($tpl, array('$id' => $message['id'], '$from_name' => template_escape($message['from-name']), '$from_url' => $from_url, '$sparkle' => $sparkle, '$from_photo' => $message['from-photo'], '$subject' => template_escape($message['title']), '$body' => template_escape(smilies(bbcode($message['body']))), '$delete' => t('Delete message'), '$to_name' => template_escape($message['name']), '$date' => datetime_convert('UTC', date_default_timezone_get(), $message['created'], 'D, d M Y - g:i A'))); } $select = $message['name'] . '<input type="hidden" name="messageto" value="' . $contact_id . '" />'; $parent = '<input type="hidden" name="replyto" value="' . $message['parent-uri'] . '" />'; $tpl = get_markup_template('prv_message.tpl'); $o .= replace_macros($tpl, array('$header' => t('Send Reply'), '$to' => t('To:'), '$subject' => t('Subject:'), '$subjtxt' => template_escape($message['title']), '$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ', '$yourmessage' => t('Your message:'), '$select' => $select, '$parent' => $parent, '$upload' => t('Upload photo'), '$insert' => t('Insert web link'), '$wait' => t('Please wait'))); return $o; } }
function message_content(&$a) { $o = ''; nav_set_selected('messages'); if (!local_user()) { notice(t('Permission denied.') . EOL); return; } $myprofile = $a->get_baseurl(true) . '/profile/' . $a->user['nickname']; $tpl = get_markup_template('mail_head.tpl'); $header = replace_macros($tpl, array('$messages' => t('Messages'), '$tab_content' => $tab_content)); if ($a->argc == 3 && ($a->argv[1] === 'drop' || $a->argv[1] === 'dropconv')) { if (!intval($a->argv[2])) { return; } $cmd = $a->argv[1]; if ($cmd === 'drop') { $r = q("DELETE FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[2]), intval(local_user())); if ($r) { info(t('Message deleted.') . EOL); } goaway($a->get_baseurl(true) . '/message'); } else { $r = q("SELECT `parent-uri`,`convid` FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[2]), intval(local_user())); if (count($r)) { $parent = $r[0]['parent-uri']; $convid = $r[0]['convid']; $r = q("DELETE FROM `mail` WHERE `parent-uri` = '%s' AND `uid` = %d ", dbesc($parent), intval(local_user())); // remove diaspora conversation pointer // Actually if we do this, we can never receive another reply to that conversation, // as we will never again have the info we need to re-create it. // We'll just have to orphan it. //if($convid) { // q("delete from conv where id = %d limit 1", // intval($convid) // ); //} if ($r) { info(t('Conversation removed.') . EOL); } } goaway($a->get_baseurl(true) . '/message'); } } if ($a->argc > 1 && $a->argv[1] === 'new') { $o .= $header; $plaintext = false; if (intval(get_pconfig(local_user(), 'system', 'plaintext'))) { $plaintext = true; } $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(true), '$editselect' => $plaintext ? 'none' : '/(profile-jot-text|prvmail-text)/', '$nickname' => $a->user['nickname'], '$linkurl' => t('Please enter a link URL:'))); $preselect = isset($a->argv[2]) ? array($a->argv[2]) : false; $prename = $preurl = $preid = ''; if ($preselect) { $r = q("select name, url, id from contact where uid = %d and id = %d limit 1", intval(local_user()), intval($a->argv[2])); if (count($r)) { $prename = $r[0]['name']; $preurl = $r[0]['url']; $preid = $r[0]['id']; } } $prefill = $preselect ? $prename : ''; // the ugly select box $select = contact_select('messageto', 'message-to-select', $preselect, 4, true, false, false, 10); $tpl = get_markup_template('prv_message.tpl'); $o .= replace_macros($tpl, array('$header' => t('Send Private Message'), '$to' => t('To:'), '$showinputs' => 'true', '$prefill' => $prefill, '$autocomp' => $autocomp, '$preid' => $preid, '$subject' => t('Subject:'), '$subjtxt' => x($_REQUEST, 'subject') ? strip_tags($_REQUEST['subject']) : '', '$text' => x($_REQUEST, 'body') ? escape_tags(htmlspecialchars($_REQUEST['body'])) : '', '$readonly' => '', '$yourmessage' => t('Your message:'), '$select' => $select, '$parent' => '', '$upload' => t('Upload photo'), '$insert' => t('Insert web link'), '$wait' => t('Please wait'), '$submit' => t('Submit'))); return $o; } if ($a->argc == 1) { // list messages $o .= $header; $r = q("SELECT count(*) AS `total` FROM `mail` \n\t\t\tWHERE `mail`.`uid` = %d GROUP BY `parent-uri` ORDER BY `created` DESC", intval(local_user()), dbesc($myprofile)); if (count($r)) { $a->set_pager_total($r[0]['total']); } $r = q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`, \n\t\t\t`mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` , `contact`.`network`,\n\t\t\tcount( * ) as count\n\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` \n\t\t\tWHERE `mail`.`uid` = %d GROUP BY `parent-uri` ORDER BY `mailcreated` DESC LIMIT %d , %d ", intval(local_user()), intval($a->pager['start']), intval($a->pager['itemspage'])); if (!count($r)) { info(t('No messages.') . EOL); return $o; } $tpl = get_markup_template('mail_list.tpl'); foreach ($r as $rr) { if ($rr['unknown']) { $partecipants = sprintf(t("Unknown sender - %s"), $rr['from-name']); } elseif (link_compare($rr['from-url'], $myprofile)) { $partecipants = sprintf(t("You and %s"), $rr['name']); } else { $partecipants = sprintf(t("%s and You"), $rr['from-name']); } $o .= replace_macros($tpl, array('$id' => $rr['id'], '$from_name' => $partecipants, '$from_url' => $rr['network'] === NETWORK_DFRN ? $a->get_baseurl(true) . '/redir/' . $rr['contact-id'] : $rr['url'], '$sparkle' => ' sparkle', '$from_photo' => $rr['thumb'] ? $rr['thumb'] : $rr['from-photo'], '$subject' => template_escape($rr['mailseen'] ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'), '$delete' => t('Delete conversation'), '$body' => template_escape($rr['body']), '$to_name' => template_escape($rr['name']), '$date' => datetime_convert('UTC', date_default_timezone_get(), $rr['mailcreated'], t('D, d M Y - g:i A')), '$seen' => $rr['mailseen'], '$count' => sprintf(tt('%d message', '%d messages', $rr['count']), $rr['count']))); } $o .= paginate($a); return $o; } if ($a->argc > 1 && intval($a->argv[1])) { $o .= $header; $r = q("SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb` \n\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` \n\t\t\tWHERE `mail`.`uid` = %d AND `mail`.`id` = %d LIMIT 1", intval(local_user()), intval($a->argv[1])); if (count($r)) { $contact_id = $r[0]['contact-id']; $convid = $r[0]['convid']; $sql_extra = sprintf(" and `mail`.`parent-uri` = '%s' ", dbesc($r[0]['parent-uri'])); if ($convid) { $sql_extra = sprintf(" and ( `mail`.`parent-uri` = '%s' OR `mail`.`convid` = '%d' ) ", dbesc($r[0]['parent-uri']), intval($convid)); } $messages = q("SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb` \n\t\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` \n\t\t\t\tWHERE `mail`.`uid` = %d {$sql_extra} ORDER BY `mail`.`created` ASC", intval(local_user())); } if (!count($messages)) { notice(t('Message not available.') . EOL); return $o; } $r = q("UPDATE `mail` SET `seen` = 1 WHERE `parent-uri` = '%s' AND `uid` = %d", dbesc($r[0]['parent-uri']), intval(local_user())); require_once "include/bbcode.php"; $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array('$nickname' => $a->user['nickname'], '$baseurl' => $a->get_baseurl(true))); $mails = array(); $seen = 0; $unknown = false; foreach ($messages as $message) { if ($message['unknown']) { $unknown = true; } if ($message['from-url'] == $myprofile) { $from_url = $myprofile; $sparkle = ''; } else { $from_url = $a->get_baseurl(true) . '/redir/' . $message['contact-id']; $sparkle = ' sparkle'; } $Text = $message['body']; $saved_image = ''; $img_start = strpos($Text, '[img]data:'); $img_end = strpos($Text, '[/img]'); if ($img_start !== false && $img_end !== false && $img_end > $img_start) { $start_fragment = substr($Text, 0, $img_start); $img_start += strlen('[img]'); $saved_image = substr($Text, $img_start, $img_end - $img_start); $end_fragment = substr($Text, $img_end + strlen('[/img]')); $Text = $start_fragment . '[!#saved_image#!]' . $end_fragment; $search = '/\\[url\\=(.*?)\\]\\[!#saved_image#!\\]\\[\\/url\\]' . '/is'; $replace = '[url=' . z_path() . '/redir/' . $message['contact-id'] . '?f=1&url=' . '$1' . '][!#saved_image#!][/url]'; $Text = preg_replace($search, $replace, $Text); if (strlen($saved_image)) { $message['body'] = str_replace('[!#saved_image#!]', '[img]' . $saved_image . '[/img]', $Text); } } $mails[] = array('id' => $message['id'], 'from_name' => template_escape($message['from-name']), 'from_url' => $from_url, 'sparkle' => $sparkle, 'from_photo' => $message['from-photo'], 'subject' => template_escape($message['title']), 'body' => template_escape(smilies(bbcode($message['body']))), 'delete' => t('Delete message'), 'to_name' => template_escape($message['name']), 'date' => datetime_convert('UTC', date_default_timezone_get(), $message['created'], 'D, d M Y - g:i A')); $seen = $message['seen']; } $select = $message['name'] . '<input type="hidden" name="messageto" value="' . $contact_id . '" />'; $parent = '<input type="hidden" name="replyto" value="' . $message['parent-uri'] . '" />'; $tpl = get_markup_template('mail_display.tpl'); $o = replace_macros($tpl, array('$thread_id' => $a->argv[1], '$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:'), '$showinputs' => '', '$subject' => t('Subject:'), '$subjtxt' => template_escape($message['title']), '$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ', '$yourmessage' => t('Your message:'), '$text' => '', '$select' => $select, '$parent' => $parent, '$upload' => t('Upload photo'), '$insert' => t('Insert web link'), '$wait' => t('Please wait'))); return $o; } }
function message_content(&$a) { if (!local_user()) { notice(t('Permission denied.') . EOL); return; } $myprofile = $a->get_baseurl() . '/profile/' . $a->user['nickname']; $tpl = file_get_contents('view/mail_head.tpl'); $header = replace_macros($tpl, array('$messages' => t('Messages'), '$inbox' => t('Inbox'), '$outbox' => t('Outbox'), '$new' => t('New Message'))); if ($a->argc == 3 && ($a->argv[1] == 'drop' || $a->argv[1] == 'dropconv')) { if (!intval($a->argv[2])) { return; } $cmd = $a->argv[1]; if ($cmd == 'drop') { $r = q("DELETE FROM `mail` WHERE `id` = %d LIMIT 1", intval($a->argv[2])); if ($r) { notice(t('Message deleted.') . EOL); } goaway($a->get_baseurl() . '/message'); } else { $r = q("SELECT `parent-uri` FROM `mail` WHERE `id` = %d LIMIT 1", intval($a->argv[2])); if (count($r)) { $parent = $r[0]['parent-uri']; $r = q("DELETE FROM `mail` WHERE `parent-uri` = '%s' ", dbesc($parent)); if ($r) { notice(t('Conversation removed.') . EOL); } } goaway($a->get_baseurl() . '/message'); } } if ($a->argc > 2 && $a->argv[1] == 'redeliver' && intval($a->argv[2])) { $post_id = intval($a->argv[2]); $php_path = strlen($a->config['php_path']) ? $a->config['php_path'] : 'php'; proc_close(proc_open("\"{$php_path}\" \"include/notifier.php\" \"mail\" \"{$post_id}\" &", array(), $foo)); goaway($a->get_baseurl() . '/message'); } if ($a->argc > 1 && $a->argv[1] == 'new') { $tpl = file_get_contents('view/msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl())); $select .= contact_select('messageto', 'message-to-select', false, 4, true); $tpl = file_get_contents('view/prv_message.tpl'); $o .= replace_macros($tpl, array('$header' => t('Send Private Message'), '$to' => t('To:'), '$subject' => t('Subject:'), '$subjtxt' => '', '$readonly' => '', '$yourmessage' => t('Your message:'), '$select' => $select, '$parent' => '', '$upload' => t('Upload photo'), '$insert' => t('Insert web link'), '$wait' => t('Please wait'))); return $o; } if ($a->argc == 1 || $a->argc == 2 && $a->argv[1] == 'sent') { $o .= $header; if ($a->argc == 2) { $eq = '='; } else { $eq = '!='; } // or this. $r = q("SELECT count(*) AS `total` FROM `mail` \n\t\t\tWHERE `from-url` {$eq} '%s' GROUP BY `parent-uri` ORDER BY `created` DESC", dbesc($myprofile)); if (count($r)) { $a->set_pager_total($r[0]['total']); } $r = q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`, \n\t\t\t`mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` \n\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` \n\t\t\tWHERE `from-url` {$eq} '%s' GROUP BY `parent-uri` ORDER BY `created` DESC LIMIT %d , %d ", dbesc($myprofile), intval($a->pager['start']), intval($a->pager['itemspage'])); if (!count($r)) { notice(t('No messages.') . EOL); return $o; } $tpl = file_get_contents('view/mail_list.tpl'); foreach ($r as $rr) { $o .= replace_macros($tpl, array('$id' => $rr['id'], '$from_name' => $rr['from-name'], '$from_url' => $a->get_baseurl() . '/redir/' . $rr['contact-id'], '$from_photo' => $rr['from-photo'], '$subject' => $rr['mailseen'] ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>', '$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'))); } $o .= paginate($a); return $o; } if ($a->argc > 1 && intval($a->argv[1])) { $o .= $header; $r = q("SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb` \n\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` \n\t\t\tWHERE `mail`.`id` = %d LIMIT 1", intval($a->argv[1])); if (count($r)) { $contact_id = $r[0]['contact-id']; $messages = q("SELECT `mail`.*, `contact`.`name`, `contact`.`url`, `contact`.`thumb` \n\t\t\t\tFROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` \n\t\t\t\tWHERE `mail`.`parent-uri` = '%s' ORDER BY `mail`.`created` ASC", dbesc($r[0]['parent-uri'])); } if (!count($messages)) { notice(t('Message not available.') . EOL); return $o; } $r = q("UPDATE `mail` SET `seen` = 1 WHERE `parent-uri` = '%s' ", dbesc($r[0]['parent-uri'])); require_once "include/bbcode.php"; $tpl = file_get_contents('view/msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl())); $tpl = file_get_contents('view/mail_conv.tpl'); foreach ($messages as $message) { $o .= replace_macros($tpl, array('$id' => $message['id'], '$from_name' => $message['from-name'], '$from_url' => $message['from-url'] == $myprofile ? $myprofile : $a->get_baseurl() . '/redir/' . $message['contact-id'], '$from_photo' => $message['from-photo'], '$subject' => $message['title'], '$body' => bbcode($message['body']), '$delete' => t('Delete message'), '$to_name' => $message['name'], '$date' => datetime_convert('UTC', date_default_timezone_get(), $message['created'], 'D, d M Y - g:i A'))); } $select = $message['name'] . '<input type="hidden" name="messageto" value="' . $contact_id . '" />'; $parent = '<input type="hidden" name="replyto" value="' . $message['parent-uri'] . '" />'; $tpl = file_get_contents('view/prv_message.tpl'); $o .= replace_macros($tpl, array('$header' => t('Send Reply'), '$to' => t('To:'), '$subject' => t('Subject:'), '$subjtxt' => $message['title'], '$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ', '$yourmessage' => t('Your message:'), '$select' => $select, '$parent' => $parent, '$upload' => t('Upload photo'), '$insert' => t('Insert web link'), '$wait' => t('Please wait'))); return $o; } }
function group_content(&$a) { if (!local_user()) { notice(t('Permission denied.') . EOL); return; } if ($a->argc == 2 && $a->argv[1] == 'new') { $tpl = file_get_contents('view/group_new.tpl'); $o .= replace_macros($tpl, array()); } if ($a->argc == 3 && $a->argv[1] == 'drop') { if (intval($a->argv[2])) { $r = q("SELECT `name` FROM `group` WHERE `id` = %d LIMIT 1", intval($a->argv[2])); if (count($r)) { $result = group_rmv($r[0]['name']); } if ($result) { notice(t('Group removed.') . EOL); } else { notice(t('Unable to remove group.') . EOL); } } goaway($a->get_baseurl() . '/group'); return; // NOTREACHED } if ($a->argc == 2 && intval($a->argv[1])) { require_once 'view/acl_selectors.php'; $r = q("SELECT * FROM `group` WHERE `id` = %d LIMIT 1", intval($a->argv[1])); if (!count($r)) { notice(t('Group not found.') . EOL); goaway($a->get_baseurl() . '/contacts'); } $group = $r[0]; $ret = group_get_members($group['id']); $preselected = array(); if (count($ret)) { foreach ($ret as $p) { $preselected[] = $p['id']; } } $drop_tpl = file_get_contents('view/group_drop.tpl'); $drop_txt = replace_macros($drop_tpl, array('$id' => $group['id'], '$delete' => t('Delete'))); $tpl = file_get_contents('view/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))); } return $o; }