]> git.mxchange.org Git - friendica.git/blobdiff - mod/photos.php
Check for user name in deleted user list and unset account expiration before importin...
[friendica.git] / mod / photos.php
index 8ac4d8590371f1ed89da07f1d63221e261d7cc58..79a51fd4c97effa9dbab099d5d7fe8bf9fee79e4 100644 (file)
@@ -5,7 +5,7 @@ require_once('include/acl_selectors.php');
 require_once('include/bbcode.php');
 require_once('include/security.php');
 require_once('include/redir.php');
-
+require_once('include/tags.php');
 
 function photos_init(&$a) {
 
@@ -166,6 +166,11 @@ function photos_post(&$a) {
                        return; // NOTREACHED
                }
 
+               // Check if the user has responded to a delete confirmation query
+               if($_REQUEST['canceled']) {
+                       goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
+               }
+
                $newalbum = notags(trim($_POST['albumname']));
                if($newalbum != $album) {
                        q("UPDATE `photo` SET `album` = '%s' WHERE `album` = '%s' AND `uid` = %d",
@@ -181,6 +186,25 @@ function photos_post(&$a) {
 
                if($_POST['dropalbum'] == t('Delete Album')) {
 
+                       // Check if we should do HTML-based delete confirmation
+                       if($_REQUEST['confirm']) {
+                               $drop_url = $a->query_string;
+                               $extra_inputs = array(
+                                       array('name' => 'albumname', 'value' => $_POST['albumname']),
+                               );
+                               $a->page['content'] = replace_macros(get_markup_template('confirm.tpl'), array(
+                                       '$method' => 'post',
+                                       '$message' => t('Do you really want to delete this photo album and all its photos?'),
+                                       '$extra_inputs' => $extra_inputs,
+                                       '$confirm' => t('Delete Album'),
+                                       '$confirm_url' => $drop_url,
+                                       '$confirm_name' => 'dropalbum', // Needed so that confirmation will bring us back into this if statement
+                                       '$cancel' => t('Cancel'),
+                               ));
+                               $a->error = 1; // Set $a->error so the other module functions don't execute
+                               return;
+                       }
+
                        $res = array();
 
                        // get the list of photos we are about to delete
@@ -228,6 +252,7 @@ function photos_post(&$a) {
                                                dbesc($rr['parent-uri']),
                                                intval($page_owner_uid)
                                        );
+                                       create_tags_from_itemuri($rr['parent-uri'], $page_owner_uid);
 
                                        $drop_id = intval($rr['id']);
 
@@ -242,10 +267,32 @@ function photos_post(&$a) {
                return; // NOTREACHED
        }
 
+
+       // Check if the user has responded to a delete confirmation query for a single photo
+       if(($a->argc > 2) && $_REQUEST['canceled']) {
+               goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
+       }
+
        if(($a->argc > 2) && (x($_POST,'delete')) && ($_POST['delete'] == t('Delete Photo'))) {
 
                // same as above but remove single photo
 
+               // Check if we should do HTML-based delete confirmation
+               if($_REQUEST['confirm']) {
+                       $drop_url = $a->query_string;
+                       $a->page['content'] = replace_macros(get_markup_template('confirm.tpl'), array(
+                               '$method' => 'post',
+                               '$message' => t('Do you really want to delete this photo?'),
+                               '$extra_inputs' => array(),
+                               '$confirm' => t('Delete Photo'),
+                               '$confirm_url' => $drop_url,
+                               '$confirm_name' => 'delete', // Needed so that confirmation will bring us back into this if statement
+                               '$cancel' => t('Cancel'),
+                       ));
+                       $a->error = 1; // Set $a->error so the other module functions don't execute
+                       return;
+               }
+
                if($visitor) {
                        $r = q("SELECT `id`, `resource-id` FROM `photo` WHERE `contact-id` = %d AND `uid` = %d AND `resource-id` = '%s' LIMIT 1",
                                intval($visitor),
@@ -275,6 +322,7 @@ function photos_post(&$a) {
                                        dbesc($i[0]['uri']),
                                        intval($page_owner_uid)
                                );
+                               create_tags_from_itemuri($i[0]['uri'], $page_owner_uid);
 
                                $url = $a->get_baseurl();
                                $drop_id = intval($i[0]['id']);
@@ -284,7 +332,7 @@ function photos_post(&$a) {
                        }
                }
 
-               goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
+               goaway($a->get_baseurl() . '/photos/' . $a->data['user']['nickname']);
                return; // NOTREACHED
        }
 
@@ -335,7 +383,7 @@ function photos_post(&$a) {
                                                $ph->scaleImage(640);
                                                $width  = $ph->getWidth();
                                                $height = $ph->getHeight();
-               
+
                                                $x = q("update photo set data = '%s', height = %d, width = %d where `resource-id` = '%s' and uid = %d and scale = 1 limit 1",
                                                        dbesc($ph->imageString()),
                                                        intval($height),
@@ -357,7 +405,7 @@ function photos_post(&$a) {
                                                        dbesc($resource_id),
                                                        intval($page_owner_uid)
                                                );
-                                       }       
+                                       }
                                }
                        }
                }
@@ -559,6 +607,7 @@ function photos_post(&$a) {
                                intval($item_id),
                                intval($page_owner_uid)
                        );
+                       create_tags_from_item($item_id);
 
                        $best = 0;
                        foreach($p as $scales) {
@@ -834,8 +883,8 @@ function photos_post(&$a) {
                        intval($item_id)
                );
        }
-       
-       if($visible) 
+
+       if($visible)
                proc_run('php', "include/notifier.php", 'wall-new', $item_id);
 
        call_hooks('photo_post_end',intval($item_id));
@@ -1024,8 +1073,10 @@ function photos_content(&$a) {
 
                call_hooks('photo_upload_form',$ret);
 
-               $default_upload = '<input id="photos-upload-choose" type="file" name="userfile" />      <div class="photos-upload-submit-wrapper" >
-               <input type="submit" name="submit" value="' . t('Submit') . '" id="photos-upload-submit" /> </div>';
+               $default_upload_box = replace_macros(get_markup_template('photos_default_uploader_box.tpl'), array());
+               $default_upload_submit = replace_macros(get_markup_template('photos_default_uploader_submit.tpl'), array(
+                       '$submit' => t('Submit'),
+               ));
 
                $usage_message = '';
                $limit = service_class_fetch($a->data['user']['uid'],'photo_upload_limit');
@@ -1038,6 +1089,25 @@ function photos_content(&$a) {
                }
 
 
+               // Private/public post links for the non-JS ACL form
+               $private_post = 1;
+               if($_REQUEST['public'])
+                       $private_post = 0;
+
+               $query_str = $a->query_string;
+               if(strpos($query_str, 'public=1') !== false)
+                       $query_str = str_replace(array('?public=1', '&public=1'), array('', ''), $query_str);
+
+               // I think $a->query_string may never have ? in it, but I could be wrong
+               // It looks like it's from the index.php?q=[etc] rewrite that the web
+               // server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61
+               if(strpos($query_str, '?') === false)
+                       $public_post_link = '?public=1';
+               else
+                       $public_post_link = '&public=1';
+
+
+
                $tpl = get_markup_template('photos_upload.tpl');
 
                if($a->theme['template_engine'] === 'internal') {
@@ -1060,9 +1130,20 @@ function photos_content(&$a) {
                        '$albumselect' => $albumselect_e,
                        '$permissions' => t('Permissions'),
                        '$aclselect' => $aclselect_e,
-                       '$uploader' => $ret['addon_text'],
-                       '$default' => (($ret['default_upload']) ? $default_upload : ''),
-                       '$uploadurl' => $ret['post_url']
+                       '$alt_uploader' => $ret['addon_text'],
+                       '$default_upload_box' => (($ret['default_upload']) ? $default_upload_box : ''),
+                       '$default_upload_submit' => (($ret['default_upload']) ? $default_upload_submit : ''),
+                       '$uploadurl' => $ret['post_url'],
+
+                       // ACL permissions box
+                       '$acl_data' => construct_acl_data($a, $a->user), // For non-Javascript ACL selector
+                       '$group_perms' => t('Show to Groups'),
+                       '$contact_perms' => t('Show to Contacts'),
+                       '$private' => t('Private Photo'),
+                       '$public' => t('Public Photo'),
+                       '$is_private' => $private_post,
+                       '$return_path' => $query_str,
+                       '$public_link' => $public_post_link,
 
                ));
 
@@ -1340,7 +1421,7 @@ function photos_content(&$a) {
                                intval($a->pager['itemspage'])
 
                        );
-               
+
                        if((local_user()) && (local_user() == $link_item['uid'])) {
                                q("UPDATE `item` SET `unseen` = 0 WHERE `parent` = %d and `uid` = %d",
                                        intval($link_item['parent']),
@@ -1372,6 +1453,24 @@ function photos_content(&$a) {
                if(($cmd === 'edit') && ($can_post)) {
                        $edit_tpl = get_markup_template('photo_edit.tpl');
 
+                       // Private/public post links for the non-JS ACL form
+                       $private_post = 1;
+                       if($_REQUEST['public'])
+                               $private_post = 0;
+
+                       $query_str = $a->query_string;
+                       if(strpos($query_str, 'public=1') !== false)
+                               $query_str = str_replace(array('?public=1', '&public=1'), array('', ''), $query_str);
+
+                       // I think $a->query_string may never have ? in it, but I could be wrong
+                       // It looks like it's from the index.php?q=[etc] rewrite that the web
+                       // server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61
+                       if(strpos($query_str, '?') === false)
+                               $public_post_link = '?public=1';
+                       else
+                               $public_post_link = '&public=1';
+
+
                        if($a->theme['template_engine'] === 'internal') {
                                $album_e = template_escape($ph[0]['album']);
                                $caption_e = template_escape($ph[0]['desc']);
@@ -1400,7 +1499,17 @@ function photos_content(&$a) {
                                '$help_tags' => t('Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'),
                                '$item_id' => ((count($linked_items)) ? $link_item['id'] : 0),
                                '$submit' => t('Submit'),
-                               '$delete' => t('Delete Photo')
+                               '$delete' => t('Delete Photo'),
+
+                               // ACL permissions box
+                               '$acl_data' => construct_acl_data($a, $ph[0]), // For non-Javascript ACL selector
+                               '$group_perms' => t('Show to Groups'),
+                               '$contact_perms' => t('Show to Contacts'),
+                               '$private' => t('Private photo'),
+                               '$public' => t('Public photo'),
+                               '$is_private' => $private_post,
+                               '$return_path' => $query_str,
+                               '$public_link' => $public_post_link,
                        ));
                }
 
@@ -1418,9 +1527,10 @@ function photos_content(&$a) {
                                $likebuttons = replace_macros($like_tpl,array(
                                        '$id' => $link_item['id'],
                                        '$likethis' => t("I like this \x28toggle\x29"),
-                                       '$nolike' => t("I don't like this \x28toggle\x29"),
+                                       '$nolike' => (feature_enabled(local_user(), 'dislike') ? t("I don't like this \x28toggle\x29") : ''),
                                        '$share' => t('Share'),
-                                       '$wait' => t('Please wait')
+                                       '$wait' => t('Please wait'),
+                                       '$return_path' => $a->query_string,
                                ));
                        }
 
@@ -1679,13 +1789,7 @@ function photos_content(&$a) {
        }
        
        $tpl = get_markup_template('photos_recent.tpl'); 
-
-       $includes = array(
-               '$photo_top' => 'photo_top.tpl',
-       );
-       $includes = set_template_includes($a->theme['template_engine'], $includes);
-
-       $o .= replace_macros($tpl,$includes + array(
+       $o .= replace_macros($tpl, array(
                '$title' => t('Recent Photos'),
                '$can_post' => $can_post,
                '$upload' => array(t('Upload New Photos'), $a->get_baseurl().'/photos/'.$a->data['user']['nickname'].'/upload'),