Example #1
0
 /**
  *
  **/
 public function routes(&$router)
 {
     //
     $router->get('/user(/:user_id)', function ($user_id) use($router) {
         $user_id = $user_id ?: $GLOBALS['user']->id;
         $user = User::find($user_id);
         if (!$user) {
             $router->halt(404, sprintf('User %s not found', $user_id));
             return;
         }
         $visibilities = get_local_visibility_by_id($user_id, 'homepage');
         if (is_array(json_decode($visibilities, true))) {
             $visibilities = json_decode($visibilities, true);
         } else {
             $visibilities = array();
         }
         $get_field = function ($field, $visibility) use($user_id, $user, $visibilities) {
             if (!$user[$field] || !is_element_visible_for_user($GLOBALS['user']->id, $user_id, $visibilities[$visibility])) {
                 return '';
             }
             return $user[$field];
         };
         $avatar = function ($size) use($user_id, $visibilities) {
             static $avatar;
             if (!$avatar) {
                 $avatar_id = is_element_visible_for_user($GLOBALS['user']->id, $user_id, $visibilities['picture']) ? $user_id : 'nobody';
                 $avatar = Avatar::getAvatar($avatar_id);
             }
             return $avatar->getURL($size);
         };
         $user = array('user_id' => $user_id, 'username' => $user['username'], 'perms' => $user['perms'], 'title_pre' => $user['title_front'], 'forename' => $user['Vorname'], 'lastname' => $user['Nachname'], 'title_post' => $user['title_rear'], 'email' => get_visible_email($user_id), 'avatar_small' => $avatar(Avatar::SMALL), 'avatar_medium' => $avatar(Avatar::MEDIUM), 'avatar_normal' => $avatar(Avatar::NORMAL), 'phone' => $get_field('privatnr', 'private_phone'), 'homepage' => $get_field('Home', 'homepage'), 'privadr' => $get_field('privadr', 'privadr'));
         $query = "SELECT value\n                      FROM user_config\n                      WHERE field = ? AND user_id = ?";
         $statement = DBManager::get()->prepare($query);
         $statement->execute(array('SKYPE_NAME', $user_id));
         $user['skype'] = $statement->fetchColumn() ?: '';
         $statement->closeCursor();
         if ($user['skype']) {
             $statement->execute(array('SKYPE_ONLINE_STATUS', $user_id));
             $user['skype_show'] = (bool) $statement->fetchColumn();
         } else {
             $user['skype_show'] = false;
         }
         $router->render(compact('user'));
     });
     // Deletes a user
     $router->delete('/user/:user_id', function ($user_id) use($router) {
         $user = new \UserManagement($user_id . '.');
         if (empty($user->user_data['auth_user_md5.user_id'])) {
             $router->halt(404, sprintf('User id "%s" not found', $user_id));
             die;
         }
         $router->halt($user->deleteUser() ? 200 : 500);
     });
 }
Example #2
0
 /**
  * getUser - retrieves data of a user
  *
  * @get /user/:user_id
  * @get /user
  */
 public function getUser($user_id = '')
 {
     $user_id = $user_id ?: $GLOBALS['user']->id;
     $user = \User::find($user_id);
     if (!$user) {
         $this->halt(404, sprintf('User %s not found', $user_id));
     }
     $visibilities = get_local_visibility_by_id($user_id, 'homepage');
     if (is_array(json_decode($visibilities, true))) {
         $visibilities = json_decode($visibilities, true);
     } else {
         $visibilities = array();
     }
     $get_field = function ($field, $visibility) use($user_id, $user, $visibilities) {
         if (!$user[$field] || !is_element_visible_for_user($GLOBALS['user']->id, $user_id, $visibilities[$visibility])) {
             return '';
         }
         return $user[$field];
     };
     $avatar = \Avatar::getAvatar($user_id);
     $user = array('user_id' => $user_id, 'username' => $user['username'], 'name' => self::getNamesOfUser($user), 'perms' => $user['perms'], 'email' => get_visible_email($user_id), 'avatar_small' => $avatar->getURL(\Avatar::SMALL), 'avatar_medium' => $avatar->getURL(\Avatar::MEDIUM), 'avatar_normal' => $avatar->getURL(\Avatar::NORMAL), 'avatar_original' => $avatar->getURL(\Avatar::ORIGINAL), 'phone' => $get_field('privatnr', 'private_phone'), 'homepage' => $get_field('Home', 'homepage'), 'privadr' => strip_tags($get_field('privadr', 'privadr')));
     $query = "SELECT value\n                  FROM user_config\n                  WHERE field = ? AND user_id = ?";
     $statement = \DBManager::get()->prepare($query);
     $statement->execute(array('SKYPE_NAME', $user_id));
     $user['skype'] = $statement->fetchColumn() ?: '';
     $statement->closeCursor();
     if ($user['skype']) {
         $statement->execute(array('SKYPE_ONLINE_STATUS', $user_id));
         $user['skype_show'] = (bool) $statement->fetchColumn();
     } else {
         $user['skype_show'] = false;
     }
     // Data fields
     $datafields = array();
     foreach (\DataFieldEntry::getDataFieldEntries($user_id, 'user') as $entry) {
         if (!$entry->isVisible()) {
             continue;
         }
         if (!\Visibility::verify($entry->getID(), $user_id)) {
             continue;
         }
         $datafields[] = array('type' => $entry->getType(), 'id' => $entry->getId(), 'name' => $entry->getName(), 'value' => $entry->getValue());
     }
     $user['datafields'] = $datafields;
     $this->etag(md5(serialize($user)));
     return $user;
 }