diff options
| author | Jesse Morgan <jesse@jesterpm.net> | 2011-10-13 12:24:43 -0700 | 
|---|---|---|
| committer | Jesse Morgan <jesse@jesterpm.net> | 2017-09-04 11:16:53 -0700 | 
| commit | 326a23aded279dedc8a4e6de64618f0fbee17bac (patch) | |
| tree | a3444296e388ac65709dfac25490828fc8f433f1 | |
| parent | 94f12b0a85feb8d8e6effb89021bf79a82174fce (diff) | |
Changed the moderator schedule table to a view. Finished the exception iterator. Modified Post to only notify the next moderator. Need to add exception adding/removal.
| -rw-r--r-- | design/database.sql | 14 | ||||
| -rw-r--r-- | htdocs/css/main.css | 10 | ||||
| -rw-r--r-- | htdocs/moderate/admin.css | 5 | ||||
| -rw-r--r-- | htdocs/moderate/schedule/index.php | 25 | ||||
| -rw-r--r-- | htdocs/moderate/src/header.inc.php | 1 | ||||
| -rw-r--r-- | htdocs/src/ModerationExceptions.inc.php | 23 | ||||
| -rw-r--r-- | htdocs/src/ModerationSchedule.inc.php | 5 | ||||
| -rw-r--r-- | htdocs/src/Post.inc.php | 11 | 
8 files changed, 70 insertions, 24 deletions
| diff --git a/design/database.sql b/design/database.sql index 60b7006..b13fa39 100644 --- a/design/database.sql +++ b/design/database.sql @@ -94,12 +94,16 @@ CREATE TABLE page (      UNIQUE  KEY(url)  ); -CREATE TABLE moderator_schedule ( -    position    TINYINT UNSIGNED NOT NULL, -    user_id     INTEGER UNSIGNED NOT NULL, +-- CREATE TABLE moderator_schedule ( +--     position    TINYINT UNSIGNED NOT NULL, +--     user_id     INTEGER UNSIGNED NOT NULL, +--  +--     PRIMARY KEY(position, user_id) +-- ); -    PRIMARY KEY(position, user_id) -); +CREATE VIEW moderator_schedule AS +    SELECT id AS position, id AS user_id FROM user +        WHERE notify=1;  CREATE TABLE moderator_exceptions (       year        INTEGER UNSIGNED NOT NULL, diff --git a/htdocs/css/main.css b/htdocs/css/main.css index 756d312..831ee18 100644 --- a/htdocs/css/main.css +++ b/htdocs/css/main.css @@ -6,6 +6,11 @@ body {      font-family: Helvetica;  } +h3 { +    margin-bottom: 0em; +    margin-top: 1.75em; +} +  #nav, #content, #footer, #buttonblock {      margin: 0 auto 0 auto;      width: 660px; @@ -44,7 +49,6 @@ body {      background: url('../images/headerbg.jpg') repeat-x center top;      text-align: center;      height: 191px; -    padding-top: 10px;  }  #about { @@ -143,3 +147,7 @@ a, a:visited {  .errorbox p {      margin: 0;  } + +.nomargin { +    margin: .5em 0 .5em 0; +} diff --git a/htdocs/moderate/admin.css b/htdocs/moderate/admin.css index 65a5a7f..fbc82a6 100644 --- a/htdocs/moderate/admin.css +++ b/htdocs/moderate/admin.css @@ -50,6 +50,11 @@ h1 {      width: 5em;  } +.userrow .remove { +    width: 5em; +    margin-left: 2em; +} +  input[type=text] {      width: 20em;  } diff --git a/htdocs/moderate/schedule/index.php b/htdocs/moderate/schedule/index.php index 9015350..f179c23 100644 --- a/htdocs/moderate/schedule/index.php +++ b/htdocs/moderate/schedule/index.php @@ -40,7 +40,7 @@ for ($i = 0; $i < $ui->getNumberOfModerators(); $i++, $ui->next()) {  }  echo "<h3>Exceptions</h3>"; -echo "<p><a href=\"exception.php\">New Exception</a></p>"; +echo "<p class=\"nomargin\"><a href=\"editor.php\">New Exception</a></p>";  // List out exceptions in order.  $exceptions = new ModerationExceptions(); @@ -48,20 +48,29 @@ $exceptions->query();  echo "<div class=\"userrow header\">"      . "<span class=\"name\">Name</span>" -    . " <span class=\"email\">Email</span>" -    . " <span class=\"admin\">Exception Week</span>" +    . "<span class=\"name\">Substitute</span>" +    . " <span class=\"admin\">Week</span>"      . " </div>";  while ($exceptions->valid()) { -    $user = $exceptions->current(); +    $user = $exceptions->getUser(); +    $substitute = $exceptions->getSubstitute(); + +    $remove = ""; + +    if ($_SESSION['currentUser']->getId() == $user->getId()) { +        $remove = "<a href=\"remove.php?uid=" . $user->getId() ."&time=". $exceptions->key() ."\">remove</a>"; +    }      printf("<div class=\"userrow\">"          . "<span class=\"name\">%s</span>" -        . " <span class=\"email\"><a href=\"mailto:%s\">%s</a></span>" -        . " <span class=\"admin\">%s</span></div>", +        . "<span class=\"name\">%s</span>" +        . " <span class=\"admin\">%s</span>" +        . " <span class=\"remove\">%s</span></div>",          $user->getName(), -        $user->getEmail(), $user->getEmail(), -        date('F j', $exceptions->key()) +        $substitute->getName(), +        date('F j', $exceptions->key()), +        $remove          ); diff --git a/htdocs/moderate/src/header.inc.php b/htdocs/moderate/src/header.inc.php index f0abbe1..6b7f135 100644 --- a/htdocs/moderate/src/header.inc.php +++ b/htdocs/moderate/src/header.inc.php @@ -53,6 +53,7 @@ if (isset($_GET['logout'])) {  <div id="modnav">      <ul>          <li><a href="<?= buildUrl('moderate/') ?>">Moderate Posts</a></li> +        <li><a href="<?= buildUrl('moderate/schedule/') ?>">Schedule</a></li>          <?php              // Admin Navigation diff --git a/htdocs/src/ModerationExceptions.inc.php b/htdocs/src/ModerationExceptions.inc.php index 06d98f8..2cf4c9d 100644 --- a/htdocs/src/ModerationExceptions.inc.php +++ b/htdocs/src/ModerationExceptions.inc.php @@ -25,10 +25,30 @@ class ModerationExceptions implements Iterator {          $this->expos = 0;      } +    /** +     *  Return the current exception row. +     */      public function current() { -        return User::getById($this->exceptions[$this->expos]['user_id']); +        return $this->exceptions[$this->expos]; +    } + +    /** +     *  Return the User object for the substitute. +     */ +    public function getSubstitute() { +        return User::getById($this->exceptions[$this->expos]['substitute']);      } +    /** +     *  Return the user object for the person who the exception is fore. +     */ +    public function getUser() { +        return User::getById($this->exceptions[$this->expos]['user_id']); +    } +         +    /** +     *  Return the unix timestamp of the first day of the exception week. +     */      public function key() {          $year = $this->exceptions[$this->expos]['year'];          $week = $this->exceptions[$this->expos]['week'] + 0; @@ -62,4 +82,3 @@ class ModerationExceptions implements Iterator {  }  ?> - diff --git a/htdocs/src/ModerationSchedule.inc.php b/htdocs/src/ModerationSchedule.inc.php index 4c094e4..6cb1785 100644 --- a/htdocs/src/ModerationSchedule.inc.php +++ b/htdocs/src/ModerationSchedule.inc.php @@ -82,6 +82,7 @@ class ModerationSchedule implements Iterator {          $this->moderator = User::getById($this->moderators[$modpos]['user_id']);          // Check for exceptions +        // TODO: Refactor this exception code to use the ModerationException iterator.          if (count($this->exceptions) > 0) {              // Skip exceptions prior to the current() date.              while ( @@ -101,10 +102,10 @@ class ModerationSchedule implements Iterator {              while($this->exceptions[$this->expos]['year'] == $this->year                  and $this->exceptions[$this->expos]['week'] == $this->week) { -                if ($this->exceptions[$i]['user_id'] == $this->moderator->getId()) { +                if ($this->exceptions[$this->expos]['user_id'] == $this->moderator->getId()) {                      // Yes, return the replacement                      $this->exceptionfor = $this->moderator; -                    $this->moderator = User::getById($this->exceptions[$this->expos]['user_id']); +                    $this->moderator = User::getById($this->exceptions[$this->expos]['substitute']);                      break;                  } diff --git a/htdocs/src/Post.inc.php b/htdocs/src/Post.inc.php index eaad6b3..c99f938 100644 --- a/htdocs/src/Post.inc.php +++ b/htdocs/src/Post.inc.php @@ -414,8 +414,7 @@ class Post {      }      public function notifyModerators() { -        $ui = new UserIterator(); -        $ui->filterNotify(true); +        $ui = new ModerationSchedule();          $ui->query();          $url = buildUrl('postings/' . $this->getId() .'.html?moderate'); @@ -425,10 +424,10 @@ class Post {          $email->appendMessage("A new posting is awaiting moderation.\nYou can view the post at $url");          if ($ui->valid()) { -            foreach($ui as $user) { -                $email->setTo($user->getEmail()); -                $email->send(); -            } +            $user = $ui->current(); + +            $email->setTo($user->getEmail()); +            $email->send();          }      }  } | 
