Back out Chat name mangling code, add personal group code (later will add name mangling), a=chris

Chris Pollett [2021-07-28 01:Jul:th]
Back out Chat name mangling code, add personal group code (later will add name mangling), a=chris
Filename
src/configs/Config.php
src/controllers/RegisterController.php
src/controllers/components/AccountaccessComponent.php
src/data/public_default.db
src/models/GroupModel.php
src/views/elements/AdminmenuElement.php
src/views/elements/Element.php
src/views/elements/GroupbarElement.php
src/views/elements/GroupfeedElement.php
src/views/elements/GroupmenuElement.php
src/views/elements/ManagegroupsElement.php
src/views/elements/WikiElement.php
diff --git a/src/configs/Config.php b/src/configs/Config.php
index 610735e76..12365fbcb 100755
--- a/src/configs/Config.php
+++ b/src/configs/Config.php
@@ -979,11 +979,7 @@ nsconddefine('NAME_TRUNCATE_LEN', 7);
 /** USER STATUS value used for someone who is not in a group but can browse*/
 nsdefine('NOT_MEMBER_STATUS', -1);
 /** USER STATUS value used for a user who can log in and perform activities */
-nsdefine('ACTIVE_STATUS', 5);
-/** USER STATUS value used for to identify if logged in user is
- running on an older version of Yioop
-*/
-nsdefine('ACTIVE_STATUS_USER_V1', 1);
+nsdefine('ACTIVE_STATUS', 1);
 /**
  * USER STATUS value used for a user whose account is created, but which
  * still needs to undergo admin or email verification/activation
@@ -998,6 +994,10 @@ nsdefine('SUSPENDED_STATUS', 3);
  * a group but who has not yet accepted
  */
 nsdefine('INVITED_STATUS', 4);
+/**
+ *
+ */
+nsdefine('PERSONAL_GROUP_PREFIX', 'Personal$');
 /**
  * Group registration type that only allows people to join a group by
  * invitation
diff --git a/src/controllers/RegisterController.php b/src/controllers/RegisterController.php
index df45c787a..58401a113 100755
--- a/src/controllers/RegisterController.php
+++ b/src/controllers/RegisterController.php
@@ -307,83 +307,15 @@ class RegisterController extends Controller implements CrawlConstants
                 break;
         }
         $user = $user_model->getUser($data['USER']);
-        $group_name_id = 'Chats$'.$user['USER_NAME'].'$'.$user['USER_ID'];
-        $group_model = $this->model("group");
-        if ($user['USER_ID'] == C\PUBLIC_USER_ID) {
-            return $this->redirectWithMessage(
-                tl('social_component_public_cant_create'));
-        } else {
-            $group_fields = [
-                "member_access" => ["ACCESS_CODES", C\ACTIVE_STATUS],
-                "register" => ["REGISTER_CODES", C\NO_JOIN],
-                "vote_access" => ["VOTING_CODES",
-                    C\NON_VOTING_GROUP],
-                "post_lifetime" => ["POST_LIFETIMES", C\FOREVER],
-                "encryption" => ["ENCRYPTION_CODES", 0]
-            ];
-            foreach ($group_fields as $field => $info) {
-                if (!isset($_REQUEST[$field]) ||
-                    !in_array($_REQUEST[$field],
-                    array_keys($data[$info[0]]))) {
-                    $_REQUEST[$field] = $info[1];
-                }
-            }
-            $group_model->addGroup($group_name_id,
-                $user['USER_ID'], $_REQUEST['register'],
-                $_REQUEST['member_access'],
-                $_REQUEST['vote_access'],
-                $_REQUEST['post_lifetime'],
-                $_REQUEST['encryption']);
-            //one exception to setting $group_id
-            $gid = $group_model->getGroupId($group_name_id);
-            $group_model->addUserGroup($user['USER_ID'], $gid);
-        }
-        $data['NUM_SHOWN'] = 5;
-        $data['NUM_GROUPS'] = $group_model->countUserGroups($user['USER_ID']);
-
-        $group_ids = $this->model("impression")->recent($user['USER_ID'],
-            C\GROUP_IMPRESSION, $data['NUM_SHOWN']);
-        $num_shown = count($group_ids);
-        if ($num_shown < $data['NUM_GROUPS'] && $num_shown <
-            $data['NUM_SHOWN']) {
-            $groups = $group_model->getUserGroups($user['USER_ID'], "", 0,"");
-            foreach ($groups as $group) {
-                if (!in_array($group['GROUP_ID'], $group_ids)) {
-                    $group_ids[] = $group['GROUP_ID'];
-                }
-                if (count($group_ids) >= $data['NUM_SHOWN']) {
-                    break;
-                }
-            }
-        }
-        $num_shown = count($group_ids);
-        $data['GROUPS'] = [];
-        $i = 0;
-        foreach ($group_ids as $group_id) {
-            $tmp_group = $group_model->getGroupById($group_id, $user['USER_ID']);
-            if (!$tmp_group) {
-                continue;
-            }
-            $data['GROUPS'][$i] = $tmp_group;
-            $item = $group_model->getMostRecentGroupPost($group_id);
-            $data['GROUPS'][$i]['NUM_POSTS'] =
-                $group_model->getGroupPostCount($group_id);
-            $data['GROUPS'][$i]['NUM_THREADS'] =
-                $group_model->getGroupThreadCount($group_id);
-            $data['GROUPS'][$i]['NUM_PAGES'] =
-                $group_model->getGroupPageCount($group_id);
-            if (isset($item['TITLE'])) {
-                $data['GROUPS'][$i]["ITEM_TITLE"] = $item['TITLE'];
-                $data['GROUPS'][$i]["THREAD_ID"] = $item['PARENT_ID'];
-            } else {
-                $data['GROUPS'][$i]["ITEM_TITLE"] =
-                    tl('accountaccess_component_no_posts_yet');
-                $data['GROUPS'][$i]["THREAD_ID"] = -1;
-            }
-            $i++;
-        }
         if (!empty($user['USER_ID'])) {
             $user_model->setUserSession($user['USER_ID'], $_SESSION);
+            $personal_group_name = C\PERSONAL_GROUP_PREFIX .
+                $user['USER_ID'];
+            if ($group_model->getGroupId($personal_group_name) < 0){
+                $group_model->addGroup($personal_group_name,
+                    $user_id, C\NO_JOIN, C\ACTIVE_STATUS,
+                    C\NON_VOTING_GROUP, C\FOREVER, 0);
+            }
         }
         unset($_SESSION['RECOVERY_ANSWERS']);
         unset($_SESSION['RECOVERY']);
@@ -1245,4 +1177,4 @@ class RegisterController extends Controller implements CrawlConstants
         }
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/src/controllers/components/AccountaccessComponent.php b/src/controllers/components/AccountaccessComponent.php
index 6b38f4339..b0fb67e4e 100644
--- a/src/controllers/components/AccountaccessComponent.php
+++ b/src/controllers/components/AccountaccessComponent.php
@@ -158,33 +158,11 @@ class AccountaccessComponent extends Component
         }
         $data['USERNAME'] = $username;
         $data['NUM_SHOWN'] = 5;
-        if ($data['USER']['STATUS'] == C\ACTIVE_STATUS_USER_V1) {
-            $data['USER_NAMES'][$username] = $username;
-            $username = strtolower($username);
-            $group_name_id = 'Chats$'.$username.'$'.$user_id;
-            $group_fields = [
-                "member_access" => ["ACCESS_CODES", C\ACTIVE_STATUS],
-                "register" => ["REGISTER_CODES", C\NO_JOIN],
-                "vote_access" => ["VOTING_CODES",
-                    C\NON_VOTING_GROUP],
-                "post_lifetime" => ["POST_LIFETIMES", C\FOREVER],
-                "encryption" => ["ENCRYPTION_CODES", 0]
-            ];
-            foreach ($group_fields as $field => $info) {
-                if (!isset($_REQUEST[$field]) ||
-                    !in_array($_REQUEST[$field],
-                    array_keys($data[$info[0]]))) {
-                    $_REQUEST[$field] = $info[1];
-                }
-            }
-            $group_model->addGroup($group_name_id,
-                $user_id, $_REQUEST['register'],
-                $_REQUEST['member_access'],
-                $_REQUEST['vote_access'],
-                $_REQUEST['post_lifetime'],
-                $_REQUEST['encryption']);
-            $group_id = $group_model->getGroupId($group_name_id);
-            $user_model->updateUserStatus($user_id, C\ACTIVE_STATUS);
+        $personal_group_name = C\PERSONAL_GROUP_PREFIX . $user_id;
+        if ($personal_group_id =
+            $group_model->getGroupId($personal_group_name) < 0) {
+            $group_model->addGroup($personal_group_name, $user_id, C\NO_JOIN,
+                C\ACTIVE_STATUS, C\NON_VOTING_GROUP, C\FOREVER, 0);
         }
         $data['NUM_GROUPS'] = $group_model->countUserGroups($user_id);
         $group_ids = $parent->model("impression")->recent($user_id,
@@ -192,7 +170,7 @@ class AccountaccessComponent extends Component
         $num_shown = count($group_ids);
         if ($num_shown < $data['NUM_GROUPS'] && $num_shown <
             $data['NUM_SHOWN']) {
-            $groups = $group_model->getUserGroups($user_id, "", 0,
+            $groups = $group_model->getUserGroups($user_id, "", [], 0,
                 $data['NUM_SHOWN']);
             foreach ($groups as $group) {
                 if (!in_array($group['GROUP_ID'], $group_ids)) {
@@ -477,7 +455,6 @@ class AccountaccessComponent extends Component
                         $_REQUEST['status']])) {
                         $_REQUEST['status'] = C\INACTIVE_STATUS;
                     } else {
-                        $norm_password = "";
                         $norm_password =
                             substr($parent->clean($_REQUEST['password'],
                             "string"), 0, C\LONG_NAME_LEN);
@@ -493,39 +470,12 @@ class AccountaccessComponent extends Component
                             $_REQUEST['status']
                         );
                         $data['USER_NAMES'][$username] = $username;
-                        $username = strtolower($username);
-                        $group_name_id = 'Chats$'.$username.'$'.$user_id;
-                        if ($user_id == C\PUBLIC_USER_ID) {
-                            return $parent->redirectWithMessage(
-                                tl('social_component_public_cant_create'));
-                        } else if ($group_model->
-                                    getGroupId($group_name_id) > 0) {
-                            return $parent->redirectWithMessage(
-                                tl('social_component_groupname_exists'));
-                        } else {
-                            $group_fields = [
-                                "member_access" => ["ACCESS_CODES",
-                                C\ACTIVE_STATUS],
-                                "register" => ["REGISTER_CODES", C\NO_JOIN],
-                                "vote_access" => ["VOTING_CODES",
-                                    C\NON_VOTING_GROUP],
-                                "post_lifetime" => ["POST_LIFETIMES", C\FOREVER],
-                                "encryption" => ["ENCRYPTION_CODES", 0]
-                            ];
-                            foreach ($group_fields as $field => $info) {
-                                if (!isset($_REQUEST[$field]) ||
-                                    !in_array($_REQUEST[$field],
-                                    array_keys($data[$info[0]]))) {
-                                    $_REQUEST[$field] = $info[1];
-                                }
-                            }
-                            $group_model->addGroup($group_name_id,
-                                $user_id, $_REQUEST['register'],
-                                $_REQUEST['member_access'],
-                                $_REQUEST['vote_access'],
-                                $_REQUEST['post_lifetime'],
-                                $_REQUEST['encryption']);
-                            $group_id = $group_model->getGroupId($group_name_id);
+                        $personal_group_name = C\PERSONAL_GROUP_PREFIX .
+                            $user_id;
+                        if ($group_model->getGroupId($personal_group_name) < 0){
+                            $group_model->addGroup($personal_group_name,
+                                $user_id, C\NO_JOIN, C\ACTIVE_STATUS,
+                                C\NON_VOTING_GROUP, C\FOREVER, 0);
                         }
                         return $parent->redirectWithMessage(
                             tl('accountaccess_component_user_added'),
diff --git a/src/data/public_default.db b/src/data/public_default.db
index f96321696..9a9ef3b6e 100644
Binary files a/src/data/public_default.db and b/src/data/public_default.db differ
diff --git a/src/models/GroupModel.php b/src/models/GroupModel.php
index 80ebc6738..f55971026 100644
--- a/src/models/GroupModel.php
+++ b/src/models/GroupModel.php
@@ -574,19 +574,12 @@ class GroupModel extends Model implements MediaConstants
                 }
             }
         }
-        if ($limit == "") {
-            $sql = "SELECT UG.GROUP_ID AS GROUP_ID, UG.USER_ID AS USER_ID," .
-                " G.GROUP_NAME AS GROUP_NAME, UG.STATUS AS STATUS ".
-                " FROM USER_GROUP UG, GROUPS G" .
-                " WHERE USER_ID = ? AND UG.GROUP_ID = G.GROUP_ID $like ";
-        } else {
-            $limit = $db->limitOffset($limit, $num);
-            $sql = "SELECT UG.GROUP_ID AS GROUP_ID, UG.USER_ID AS USER_ID," .
-                " G.GROUP_NAME AS GROUP_NAME, UG.STATUS AS STATUS ".
-                " FROM USER_GROUP UG, GROUPS G" .
-                " WHERE USER_ID = ? AND UG.GROUP_ID = G.GROUP_ID $like ".
-                " $order_by $limit";
-        }
+        $limit = $db->limitOffset($limit, $num);
+        $sql = "SELECT UG.GROUP_ID AS GROUP_ID, UG.USER_ID AS USER_ID," .
+            " G.GROUP_NAME AS GROUP_NAME, UG.STATUS AS STATUS ".
+            " FROM USER_GROUP UG, GROUPS G" .
+            " WHERE USER_ID = ? AND UG.GROUP_ID = G.GROUP_ID $like ".
+            " $order_by $limit";
         $result = $db->execute($sql, $param_array);
         $groups = [];
         while ($group = $db->fetchArray($result)) {
@@ -2736,7 +2729,7 @@ EOD;
                 return $sub_out;
             }
             if (is_array($sub_out[1])) {
-                for ($i = 0 ; $i < count($sub_out[1]); $i++) {
+                for ($i = s0; $i < count($sub_out[1]); $i++) {
                     array_push($out[1], $sub_out[1][$i]);
                 }
             } else {
@@ -3256,7 +3249,7 @@ EOD;
             $file_size = strlen($data);
             $vcs->headPutContents("$folder/$file_name", $data);
         }
-        $this->makeThumbStripExif ($file_name, $folder, $thumb_folder,
+        $this->makeThumbStripExif($file_name, $folder, $thumb_folder,
             $mime_type);
         if (C\nsdefined('FFMPEG') && in_array($mime_type, [
             'video/mp4', 'video/webm', 'video/ogg', 'video/avi',
@@ -3570,7 +3563,7 @@ EOD;
             } else if ($thumb_folder && !$resource['is_dir'] &&
                 time() < $time + C\PAGE_TIMEOUT/2) {
                 $resource['has_thumb'] =
-                    $this->makeThumbStripExif ($name, $folder, $thumb_folder);
+                    $this->makeThumbStripExif($name, $folder, $thumb_folder);
             }
             $resources[] = $resource;
         }
diff --git a/src/views/elements/AdminmenuElement.php b/src/views/elements/AdminmenuElement.php
index 71f654026..480767c65 100644
--- a/src/views/elements/AdminmenuElement.php
+++ b/src/views/elements/AdminmenuElement.php
@@ -52,7 +52,6 @@ class AdminmenuElement extends Element
      */
     public function render($data)
     {
-        $data = $this->editChatGroupName($data);
         $logged_in = !empty($data["ADMIN"]);
         $is_submenu = false;
         $admin_prefix = "";
diff --git a/src/views/elements/Element.php b/src/views/elements/Element.php
index 25f728e5d..daab30146 100755
--- a/src/views/elements/Element.php
+++ b/src/views/elements/Element.php
@@ -116,7 +116,7 @@ abstract class Element
             ?>
             <div id="settings-toggle-icon">
             <div class='top'>[<?=$user_name ?>]
-            </div><div class='bottom'  role="img"
+            </div><div class='bottom' role="img"
                 aria-label="<?= tl('element_settings_toggle')
                 ?>">&equiv;</div>
             </div>
@@ -126,79 +126,4 @@ abstract class Element
                 tl('element_settings_toggle').'">&equiv;</div>');
         }?></div></div><?php
     }
-    /**
-     *  Used to rewrite the user specific private chat group name into
-     *  a localized version of the word "Chat"
-     *
-     *  @param array $data contains all external data from the controller
-     * that should be used in drawing the view
-     */
-    public function editChatGroupName($data)
-    {
-        if (!empty($data['GROUPS'])) {
-            foreach ($data['GROUPS'] as $key  => $group_value) {
-                if (strpos($group_value['GROUP_NAME'], "Chats\$") !== false) {
-                    $data['GROUPS'][$key]['GROUP_NAME'] =
-                        tl('element_chat_name');
-                }
-            }
-        }
-        if (!empty($data['PAGES'])) {
-            // handle group feed items for chat
-            foreach ($data['PAGES'] as $key  => $page_value) {
-                if (!empty($data['PAGES'][$key][CrawlConstants::SOURCE_NAME]) &&
-                    strpos($data['PAGES'][$key][CrawlConstants::SOURCE_NAME],
-                    "Chats\$") !== false) {
-                    if (!empty($data['GROUP_NAME'])) {
-                        $data['GROUP_NAME'] = tl('element_chat_name');
-                    }
-                    $data['PAGES'][$key][CrawlConstants::SOURCE_NAME] =
-                        tl('element_chat_name');
-                    $title = $data['PAGES'][$key][CrawlConstants::TITLE];
-                    $chat_pos = strpos($title, tl('element_chat_name'));
-                    $str1 = substr($title, $chat_pos);
-                    $str1 = substr($title, 0, -strlen($str1));
-                    $data['PAGES'][$key][CrawlConstants::TITLE] =
-                        $str1 . tl('element_chat_name');
-                    $description = $data['PAGES'][$key][
-                        CrawlConstants::DESCRIPTION];
-                    $chat_pos = strpos($description, tl('element_chat_name'));
-                    $str1 = substr($description, $chat_pos);
-                    $str1 = substr($description, 0, -strlen($str1));
-                    $data['PAGES'][$key][CrawlConstants::DESCRIPTION] =
-                        trim($str1) . " " . tl('element_chat_name');
-                    break;
-                }
-            }
-        }
-        if (!empty($data['GROUP']['GROUP_NAME']) &&
-            strpos($data['GROUP']['GROUP_NAME'], "Chats\$") !== false) {
-            $data['GROUP']['GROUP_NAME'] = tl('element_chat_name');
-        }
-        if (!empty($data['CURRENT_GROUP']['name']) && strpos(
-            $data['CURRENT_GROUP']['name'], "Chats\$") !== false) {
-            $data['CURRENT_GROUP']['name'] = tl('element_chat_name');
-        }
-        return $data;
-    }
-    /**
-     *  Used to rewrite the user specific private chat group name into
-     *  a localized version of the word "Chat" for the wiki page side bar
-     *
-     * @param string $group_name name of the group portion of the name
-     *  mangled user specific chat group name
-     * @param array $options array of options that might have user specific
-     *  chat group name in the sidebar menu
-     */
-    public function editOptions($group_name, $options)
-    {
-        foreach ($options as $key => $option_value) {
-            if (strpos($option_value, "Chats") !== false) {
-                $options[$key] = tl('element_chat_name') . " " .
-                    substr($option_value,
-                        strlen($group_name) - strlen($option_value));
-            }
-        }
-        return $options;
-    }
 }
diff --git a/src/views/elements/GroupbarElement.php b/src/views/elements/GroupbarElement.php
index 69c8f41e3..e76d028ce 100644
--- a/src/views/elements/GroupbarElement.php
+++ b/src/views/elements/GroupbarElement.php
@@ -49,7 +49,6 @@ class GroupbarElement extends Element
      */
     public function render($data)
     {
-        $data = $this->editChatGroupName($data);
         if (isset($data["HEAD"]['page_type']) &&
             $data["HEAD"]['page_type'] == 'presentation' &&
             $data['MODE'] == 'read' ) {
diff --git a/src/views/elements/GroupfeedElement.php b/src/views/elements/GroupfeedElement.php
index 9fabcc816..f24237f08 100644
--- a/src/views/elements/GroupfeedElement.php
+++ b/src/views/elements/GroupfeedElement.php
@@ -51,7 +51,6 @@ class GroupfeedElement extends Element implements CrawlConstants
      */
     public function render($data)
     {
-        $data = $this->editChatGroupName($data);
         $logged_in = !empty($data["ADMIN"]);
         $is_status = isset($data['STATUS']);
         $is_api = !empty($data['API']);
@@ -204,7 +203,6 @@ class GroupfeedElement extends Element implements CrawlConstants
     public function renderUngroupedView($logged_in, $base_query, $paging_query,
         &$data)
     {
-        $data = $this->editChatGroupName($data);
         $is_api = !empty($data['API']);
         $is_status = !empty($data['STATUS']);
         $open_in_tabs = $data['OPEN_IN_TABS'];
diff --git a/src/views/elements/GroupmenuElement.php b/src/views/elements/GroupmenuElement.php
index 61b87dbcc..c6af2aef2 100644
--- a/src/views/elements/GroupmenuElement.php
+++ b/src/views/elements/GroupmenuElement.php
@@ -52,7 +52,6 @@ class GroupmenuElement extends Element implements CrawlConstants
      */
     public function render($data)
     {
-        $data = $this->editChatGroupName($data);
         $logged_in = !empty($data["ADMIN"]);
         $is_wiki = isset($data['ELEMENT']) && $data['ELEMENT'] == 'wiki';
         $token_string = ($logged_in && isset($data[C\CSRF_TOKEN])) ?
diff --git a/src/views/elements/ManagegroupsElement.php b/src/views/elements/ManagegroupsElement.php
index e14dfd5e2..b67c16f05 100755
--- a/src/views/elements/ManagegroupsElement.php
+++ b/src/views/elements/ManagegroupsElement.php
@@ -51,7 +51,6 @@ class ManagegroupsElement extends Element
      */
     public function render($data)
     {
-        $data = $this->editChatGroupName($data);
         $admin_url = htmlentities(B\controllerUrl("admin", true));
         $token_string = C\CSRF_TOKEN . "=" . $data[C\CSRF_TOKEN];
         ?>
@@ -200,13 +199,9 @@ class ManagegroupsElement extends Element
                         }
                     }
                     if ($col_name == "STATUS") {
-                        $group_status = $group[$col_name];
-                        $group_status = ($group_status ==
-                            C\ACTIVE_STATUS_USER_V1) ? C\ACTIVE_STATUS :
-                            $group_status;
                         $group_column =
-                            $data['MEMBERSHIP_CODES'][$group_status];
-                        if ($group_status == C\ACTIVE_STATUS) {
+                            $data['MEMBERSHIP_CODES'][$group[$col_name]];
+                        if ($group['STATUS'] == C\ACTIVE_STATUS) {
                             continue;
                         }
                     }
@@ -382,7 +377,6 @@ class ManagegroupsElement extends Element
      */
     public function renderGroupsForm($data)
     {
-        $data = $this->editChatGroupName($data);
         $admin_url = htmlentities(B\controllerUrl('admin', true));
         $base_url = $admin_url . C\CSRF_TOKEN . "=" . $data[C\CSRF_TOKEN].
             "&amp;a=manageGroups&amp;visible_users=" . $data['visible_users'];
diff --git a/src/views/elements/WikiElement.php b/src/views/elements/WikiElement.php
index ce03f4d5f..1975c3342 100644
--- a/src/views/elements/WikiElement.php
+++ b/src/views/elements/WikiElement.php
@@ -1420,7 +1420,6 @@ class WikiElement extends Element implements CrawlConstants
      */
     public function renderPages($data, $can_edit, $logged_in)
     {
-        $data = $this->editChatGroupName($data);
         $token_string = ($logged_in) ? C\CSRF_TOKEN ."=". $data[C\CSRF_TOKEN] :
             "";
         $group_id = $data["GROUP"]["GROUP_ID"];
ViewGit