/** * Go :-) * * @param boolean $skip_perms if TRUE, no user permissions will be taken in account and all servers will be updated */ public function run($skip_perms = false) { // check if we need to restrict the servers to a certain user $sql_join = ''; if (!$skip_perms && $this->container->get('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->container->get('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->container->get('db')->query($sql); $updater = new Updater\StatusUpdater($this->container->get('db')); $notifier = new Updater\StatusNotifier($this->container->get('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->container->get('db')); $archive->archive(); $archive->cleanup(); }