user contacts: fix #797 , add searching in url and nickname, add batch actions
This commit is contained in:
parent
68e0324c1b
commit
9febcedf93
10 changed files with 206 additions and 56 deletions
151
mod/contacts.php
151
mod/contacts.php
|
@ -67,11 +67,61 @@ function contacts_init(&$a) {
|
|||
|
||||
}
|
||||
|
||||
function contacts_batch_actions(&$a){
|
||||
$contacts_id = $_POST['contact_batch'];
|
||||
if (!is_array($contacts_id)) return;
|
||||
|
||||
$orig_records = q("SELECT * FROM `contact` WHERE `id` IN (%s) AND `uid` = %d AND `self` = 0",
|
||||
implode(",", $contacts_id),
|
||||
intval(local_user())
|
||||
);
|
||||
|
||||
$count_actions=0;
|
||||
foreach($orig_records as $orig_record) {
|
||||
$contact_id = $orig_record['id'];
|
||||
if (x($_POST, 'contacts_batch_update')) {
|
||||
_contact_update($contact_id);
|
||||
$count_actions++;
|
||||
}
|
||||
if (x($_POST, 'contacts_batch_block')) {
|
||||
$r = _contact_block($contact_id, $orig_record);
|
||||
if ($r) $count_actions++;
|
||||
}
|
||||
if (x($_POST, 'contacts_batch_ignore')) {
|
||||
$r = _contact_ignore($contact_id, $orig_record);
|
||||
if ($r) $count_actions++;
|
||||
}
|
||||
if (x($_POST, 'contacts_batch_archive')) {
|
||||
$r = _contact_archive($contact_id, $orig_record);
|
||||
if ($r) $count_actions++;
|
||||
}
|
||||
if (x($_POST, 'contacts_batch_drop')) {
|
||||
_contact_drop($contact_id, $orig_record);
|
||||
$count_actions++;
|
||||
}
|
||||
}
|
||||
if ($count_actions>0) {
|
||||
info ( sprintf( tt("%d contact edited.", "%d contacts edited", $count_actions), $count_actions) );
|
||||
}
|
||||
|
||||
if(x($_SESSION,'return_url'))
|
||||
goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
|
||||
else
|
||||
goaway($a->get_baseurl(true) . '/contacts');
|
||||
|
||||
}
|
||||
|
||||
|
||||
function contacts_post(&$a) {
|
||||
|
||||
if(! local_user())
|
||||
return;
|
||||
|
||||
if ($a->argv[1]==="batch") {
|
||||
contacts_batch_actions($a);
|
||||
return;
|
||||
}
|
||||
|
||||
$contact_id = intval($a->argv[1]);
|
||||
if(! $contact_id)
|
||||
return;
|
||||
|
@ -134,6 +184,49 @@ function contacts_post(&$a) {
|
|||
|
||||
}
|
||||
|
||||
/*contact actions*/
|
||||
function _contact_update($contact_id) {
|
||||
// pull feed and consume it, which should subscribe to the hub.
|
||||
proc_run('php',"include/poller.php","$contact_id");
|
||||
}
|
||||
function _contact_block($contact_id, $orig_record) {
|
||||
$blocked = (($orig_record['blocked']) ? 0 : 1);
|
||||
$r = q("UPDATE `contact` SET `blocked` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($blocked),
|
||||
intval($contact_id),
|
||||
intval(local_user())
|
||||
);
|
||||
return $r;
|
||||
|
||||
}
|
||||
function _contact_ignore($contact_id, $orig_record) {
|
||||
$readonly = (($orig_record['readonly']) ? 0 : 1);
|
||||
$r = q("UPDATE `contact` SET `readonly` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($readonly),
|
||||
intval($contact_id),
|
||||
intval(local_user())
|
||||
);
|
||||
return $r;
|
||||
}
|
||||
function _contact_archive($contact_id, $orig_record) {
|
||||
$archived = (($orig_record['archive']) ? 0 : 1);
|
||||
$r = q("UPDATE `contact` SET `archive` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($archived),
|
||||
intval($contact_id),
|
||||
intval(local_user())
|
||||
);
|
||||
if ($archived) {
|
||||
q("UPDATE `item` SET `private` = 2 WHERE `contact-id` = %d AND `uid` = %d", intval($contact_id), intval(local_user()));
|
||||
}
|
||||
return $r;
|
||||
}
|
||||
function _contact_drop($contact_id, $orig_record) {
|
||||
require_once('include/Contact.php');
|
||||
$a = get_app();
|
||||
|
||||
terminate_friendship($a->user,$a->contact,$orig_record);
|
||||
contact_remove($orig_record['id']);
|
||||
}
|
||||
|
||||
|
||||
function contacts_content(&$a) {
|
||||
|
@ -168,57 +261,38 @@ function contacts_content(&$a) {
|
|||
}
|
||||
|
||||
if($cmd === 'update') {
|
||||
|
||||
// pull feed and consume it, which should subscribe to the hub.
|
||||
proc_run('php',"include/poller.php","$contact_id");
|
||||
_contact_update($contact_id);
|
||||
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
if($cmd === 'block') {
|
||||
$blocked = (($orig_record[0]['blocked']) ? 0 : 1);
|
||||
$r = q("UPDATE `contact` SET `blocked` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($blocked),
|
||||
intval($contact_id),
|
||||
intval(local_user())
|
||||
);
|
||||
$r = _contact_block($contact_id, $orig_record[0]);
|
||||
if($r) {
|
||||
//notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL );
|
||||
info( (($blocked) ? t('Contact has been blocked') : t('Contact has been unblocked')) . EOL );
|
||||
}
|
||||
|
||||
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
||||
return; // NOTREACHED
|
||||
}
|
||||
|
||||
if($cmd === 'ignore') {
|
||||
$readonly = (($orig_record[0]['readonly']) ? 0 : 1);
|
||||
$r = q("UPDATE `contact` SET `readonly` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($readonly),
|
||||
intval($contact_id),
|
||||
intval(local_user())
|
||||
);
|
||||
$r = _contact_ignore($contact_id, $orig_record[0]);
|
||||
if($r) {
|
||||
info( (($readonly) ? t('Contact has been ignored') : t('Contact has been unignored')) . EOL );
|
||||
}
|
||||
|
||||
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
||||
return; // NOTREACHED
|
||||
}
|
||||
|
||||
|
||||
if($cmd === 'archive') {
|
||||
$archived = (($orig_record[0]['archive']) ? 0 : 1);
|
||||
$r = q("UPDATE `contact` SET `archive` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($archived),
|
||||
intval($contact_id),
|
||||
intval(local_user())
|
||||
);
|
||||
if ($archived) {
|
||||
q("UPDATE `item` SET `private` = 2 WHERE `contact-id` = %d AND `uid` = %d", intval($contact_id), intval(local_user()));
|
||||
}
|
||||
$r = _contact_archive($contact_id, $orig_record[0]);
|
||||
if($r) {
|
||||
//notice( t('Contact has been ') . (($archived) ? t('archived') : t('unarchived')) . EOL );
|
||||
info( (($archived) ? t('Contact has been archived') : t('Contact has been unarchived')) . EOL );
|
||||
}
|
||||
}
|
||||
|
||||
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
||||
return; // NOTREACHED
|
||||
}
|
||||
|
@ -251,15 +325,13 @@ function contacts_content(&$a) {
|
|||
}
|
||||
// Now check how the user responded to the confirmation query
|
||||
if($_REQUEST['canceled']) {
|
||||
goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
|
||||
|
||||
if(x($_SESSION,'return_url'))
|
||||
goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
|
||||
else
|
||||
goaway($a->get_baseurl(true) . '/contacts');
|
||||
}
|
||||
|
||||
require_once('include/Contact.php');
|
||||
|
||||
terminate_friendship($a->user,$a->contact,$orig_record[0]);
|
||||
|
||||
contact_remove($orig_record[0]['id']);
|
||||
_contact_drop($contact_id, $orig_record[0]);
|
||||
info( t('Contact has been removed.') . EOL );
|
||||
if(x($_SESSION,'return_url'))
|
||||
goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
|
||||
|
@ -526,7 +598,7 @@ function contacts_content(&$a) {
|
|||
$search_txt = dbesc(protect_sprintf(preg_quote($search)));
|
||||
$searching = true;
|
||||
}
|
||||
$sql_extra .= (($searching) ? " AND `name` REGEXP '$search_txt' " : "");
|
||||
$sql_extra .= (($searching) ? " AND (name REGEXP '$search_txt' OR url REGEXP '$search_txt' OR nick REGEXP '$search_txt') " : "");
|
||||
|
||||
if($nets)
|
||||
$sql_extra .= sprintf(" AND network = '%s' ", dbesc($nets));
|
||||
|
@ -604,6 +676,7 @@ function contacts_content(&$a) {
|
|||
|
||||
$tpl = get_markup_template("contacts-template.tpl");
|
||||
$o .= replace_macros($tpl, array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$header' => t('Contacts') . (($nets) ? ' - ' . network_to_name($nets) : ''),
|
||||
'$tabs' => $t,
|
||||
'$total' => $total,
|
||||
|
@ -613,6 +686,14 @@ function contacts_content(&$a) {
|
|||
'$submit' => t('Find'),
|
||||
'$cmd' => $a->cmd,
|
||||
'$contacts' => $contacts,
|
||||
'$contact_drop_confirm' => t('Do you really want to delete this contact?'),
|
||||
'$batch_actions' => array(
|
||||
'contacts_batch_update' => t('Update'),
|
||||
'contacts_batch_block' => t('Block')."/".t("Unblock"),
|
||||
"contacts_batch_ignore" => t('Ignore')."/".t("Unignore"),
|
||||
"contacts_batch_archive" => t('Archive')."/".t("Unarchive"),
|
||||
"contacts_batch_drop" => t('Delete'),
|
||||
),
|
||||
'$paginate' => paginate($a),
|
||||
|
||||
));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue