Exemplo n.º 1
0
 /**
  * Check username on:
  *
  * - Length (2-64 chars)
  * - Contents (alphabetic chars and digits only)
  * - Unique
  * @param string $username
  * @param int $user_id to check whether the username is unique
  * @return boolean
  * @throws \InvalidArgumentException
  */
 public function username($username, $user_id = 0)
 {
     if (strlen($username) > 64 || strlen($username) < 2) {
         throw new \InvalidArgumentException('user_name_bad_length');
     }
     if (!preg_match('/^[a-zA-Z\\d_]{2,64}$/i', $username)) {
         throw new \InvalidArgumentException('user_name_invalid');
     }
     $user_exists = $this->user->getUserByUsername($username);
     if (!empty($user_exists) && ($user_id == 0 || $user_id != $user_exists->user_id)) {
         throw new \InvalidArgumentException('user_name_exists');
     }
     return true;
 }
Exemplo n.º 2
0
 /**
  * Go :-)
  */
 public function run()
 {
     // check if we need to restrict the servers to a certain user
     $sql_join = '';
     if ($this->user != null && $this->user->getUserLevel() > PSM_USER_ADMIN) {
         // restrict by user_id
         $sql_join = "JOIN `" . PSM_DB_PREFIX . "users_servers` AS `us` ON (\n\t\t\t\t\t\t`us`.`user_id`={$this->user->getUserId()}\n\t\t\t\t\t\tAND `us`.`server_id`=`s`.`server_id`\n\t\t\t\t\t\t)";
     }
     $sql = "SELECT `s`.`server_id`,`s`.`ip`,`s`.`port`,`s`.`label`,`s`.`type`,`s`.`pattern`,`s`.`status`,`s`.`active`,`s`.`email`,`s`.`sms`,`s`.`pushover`\n\t\t\t\tFROM `" . PSM_DB_PREFIX . "servers` AS `s`\n\t\t\t\t{$sql_join}\n\t\t\t\tWHERE `active`='yes' ";
     $servers = $this->db->query($sql);
     $updater = new Updater\StatusUpdater($this->db);
     $notifier = new Updater\StatusNotifier($this->db);
     foreach ($servers as $server) {
         $status_old = $server['status'] == 'on' ? true : false;
         $status_new = $updater->update($server['server_id']);
         // notify the nerds if applicable
         $notifier->notify($server['server_id'], $status_old, $status_new);
     }
     // clean-up time!! archive all records
     $archive = new ArchiveManager($this->db);
     $archive->archive();
     $archive->cleanup();
 }
 /**
  * Create HTML code for the menu
  * @return string
  */
 protected function createHTMLMenu()
 {
     $ulvl = $this->user ? $this->user->getUserLevel() : PSM_USER_ANONYMOUS;
     $tpl_data = array('label_help' => psm_get_lang('menu', 'help'), 'label_profile' => psm_get_lang('users', 'profile'), 'label_logout' => psm_get_lang('login', 'logout'), 'url_profile' => psm_build_url(array('mod' => 'user_profile')), 'url_logout' => psm_build_url(array('logout' => 1)));
     switch ($ulvl) {
         case PSM_USER_ADMIN:
             $items = array('server_status', 'server', 'server_log', 'user', 'config', 'server_update');
             break;
         case PSM_USER_USER:
             $items = array('server_status', 'server', 'server_log', 'server_update');
             break;
         default:
             $items = array();
             break;
     }
     $tpl_data['menu'] = array();
     foreach ($items as $key) {
         $tpl_data['menu'][] = array('active' => $key == psm_GET('mod') ? 'active' : '', 'url' => psm_build_url(array('mod' => $key)), 'label' => psm_get_lang('menu', $key));
     }
     if ($ulvl != PSM_USER_ANONYMOUS) {
         $user = $this->user->getUser();
         $tpl_data['label_usermenu'] = str_replace('%user_name%', $user->name, psm_get_lang('login', 'welcome_usermenu'));
     }
     return $this->twig->render('main/menu.tpl.html', $tpl_data);
 }