Esempio n. 1
0
 /**
  * Delegates requested action to appropriate method.
  *
  * @param int $id		Queue item id.
  * @param string $action	Requested action.
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function item_action($id, $action)
 {
     $this->load_item($id);
     if (!$this->check_auth($action)) {
         return $this->helper->needs_auth();
     }
     $this->display->assign_global_vars();
     $this->generate_navigation('queue');
     $valid_action = false;
     $check_actions = array('in_progress', 'no_progress', 'tested', 'not_tested', 'rebuild');
     if (in_array($action, $check_actions) && !check_link_hash($this->request->variable('hash', ''), 'queue_action')) {
         return $this->helper->error('PAGE_REQUEST_INVALID');
     }
     // Only allow these actions to run if the queue item is still open.
     if ($this->queue->queue_status > 0) {
         $valid_action = true;
         switch ($action) {
             case 'in_progress':
                 $this->queue->in_progress();
                 break;
             case 'no_progress':
                 $this->queue->no_progress();
                 break;
             case 'tested':
                 $this->queue->change_tested_mark(true);
                 break;
             case 'not_tested':
                 $this->queue->change_tested_mark(false);
                 break;
             case 'move':
                 $this->move();
                 break;
             case 'allow_author_repack':
                 return $this->allow_author_repack();
                 break;
             case 'approve':
                 return $this->approve();
                 break;
             case 'deny':
                 return $this->deny();
                 break;
             default:
                 $valid_action = false;
         }
     }
     switch ($action) {
         case 'rebuild':
             $this->queue->update_first_queue_post();
             break;
         case 'reply':
         case 'quote':
         case 'edit':
         case 'quick_edit':
         case 'delete':
         case 'undelete':
             return $this->posting($action);
             break;
         default:
             if (!$valid_action) {
                 return $this->helper->error('INVALID_ACTION', 404);
             }
     }
     redirect($this->queue->get_url());
 }
Esempio n. 2
0
    public function queue($mode, $queue_id = false)
    {
        switch ($mode) {
            case 'update_first_queue_post':
                $queue = new titania_queue();
                $contrib = new titania_contribution();
                $sql = 'SELECT * FROM ' . TITANIA_QUEUE_TABLE . ' q, ' . TITANIA_CONTRIBS_TABLE . ' c
					WHERE c.contrib_id = q.contrib_id' . ($queue_id ? ' AND queue_id = ' . (int) $queue_id : '');
                $result = phpbb::$db->sql_query($sql);
                while ($row = phpbb::$db->sql_fetchrow($result)) {
                    $contrib->__set_array($row);
                    $queue->__set_array($row);
                    $queue->update_first_queue_post(false, $contrib);
                }
                phpbb::$db->sql_freeresult($result);
                unset($queue);
                break;
            case 'revision_queue_id':
                $sql = 'SELECT queue_id, revision_id FROM ' . TITANIA_QUEUE_TABLE;
                $result = phpbb::$db->sql_query($sql);
                while ($row = phpbb::$db->sql_fetchrow($result)) {
                    $sql = 'UPDATE ' . TITANIA_REVISIONS_TABLE . ' SET revision_queue_id = ' . (int) $row['queue_id'] . '
						WHERE revision_id = ' . (int) $row['revision_id'];
                    phpbb::$db->sql_query($sql);
                }
                phpbb::$db->sql_freeresult($result);
                break;
        }
    }
Esempio n. 3
0
    /**
     * Sync queue
     *
     * @param string $mode
     * @param int|bool $queue_id	(Optional) Queue id to limit to. Defaults to false.
     */
    public function queue($mode, $queue_id = false)
    {
        switch ($mode) {
            case 'update_first_queue_post':
                $queue = new \titania_queue();
                $contrib = new \titania_contribution();
                $sql = 'SELECT *
					FROM ' . $this->queue_table . ' q, ' . $this->contribs_table . ' c
					WHERE c.contrib_id = q.contrib_id' . ($queue_id ? ' AND queue_id = ' . (int) $queue_id : '');
                $result = $this->db->sql_query($sql);
                while ($row = $this->db->sql_fetchrow($result)) {
                    $contrib->__set_array($row);
                    $contrib->set_type($row['contrib_type']);
                    $queue->__set_array($row);
                    $queue->update_first_queue_post(false, $contrib);
                }
                $this->db->sql_freeresult($result);
                unset($queue);
                break;
            case 'revision_queue_id':
                $sql = 'SELECT queue_id, revision_id
					FROM ' . $this->queue_table;
                $result = $this->db->sql_query($sql);
                while ($row = $this->db->sql_fetchrow($result)) {
                    $sql = 'UPDATE ' . $this->revisions_table . '
						SET revision_queue_id = ' . (int) $row['queue_id'] . '
						WHERE revision_id = ' . (int) $row['revision_id'];
                    $this->db->sql_query($sql);
                }
                $this->db->sql_freeresult($result);
                break;
        }
    }