コード例 #1
0
 public function remove()
 {
     $id = array_shift($this->args);
     $this->out('Removing ' . $id);
     if (Queue::remove($id, $this->params['force'])) {
         $this->out('Queue Removed.');
     } else {
         $this->out('Failed to remove Queue.');
         $this->out(Queue::view($id));
     }
 }
コード例 #2
0
 public static function deleteItem($params)
 {
     $format = Utils::getFormat($params['args'], 2, 4);
     $projectType = Utils::getProjectType($params['args']);
     $projectSlugIndex = $projectType == 'system' ? 0 : 2;
     $projectSlug = $params['args'][$projectSlugIndex];
     $project = new Project($projectSlug);
     $itemIndex = $projectType == 'system' ? 1 : 3;
     $itemId = $params['args'][$itemIndex];
     $user = User::getAuthenticatedUser();
     switch ($params['method']) {
         // POST: Delete an item
         case 'POST':
             $status = 'success';
             $message = '';
             // Make sure the user is project admin or site admin
             RoleController::forceClearance(array('project.admin', 'project.owner', 'system.admin'), $user, array('project' => $project));
             // Load item to make sure it exists
             $item = new Item($itemId, $projectSlug);
             // Delete the file
             Media::removeFileForItem($item);
             // Delete from project proof queue
             $queue = new Queue("project.proof:{$project->slug}", false);
             $queue->remove($item);
             $queue->save();
             // Delete from project review queue (if it's there)
             $queue = new Queue("project.review:{$project->slug}", false);
             $queue->remove($item);
             $queue->save();
             // Delete from database
             if (!$item->deleteFromDatabase()) {
                 $status = 'error';
                 $message = 'errors.deleting_item';
             }
             echo json_encode(array('status' => $status, 'message' => $message));
             break;
     }
 }
コード例 #3
0
ファイル: queue-test.php プロジェクト: hmmbug/unbindery
}
echo json_encode($queue->getItems());
echo "\n";
echo "test 1 done\n\n";
try {
    Queue::register('compare', array('Point', 'compareItems'));
    Queue::register('destroy', 'destroyQueue');
} catch (Exception $e) {
    echo "FAIL\n";
    echo $e->getMessage();
}
$queue = new Queue('2');
echo "queue 1 loaded\n";
$item = $queue->getFirstItem();
echo 'first item: ' . $item . "\n";
$item = $queue->remove(new Point(4, 0));
echo 'fourth item: ' . $item . "\n";
$item = $queue->getFirstItem();
echo 'second item: ' . $item . "\n";
if ($queue->save()) {
    echo "\nsaved.\n";
}
echo json_encode($queue->getItems());
echo "\n";
$items = $queue->getItems();
$items[] = new Point(4, 3);
$items[] = new Point(5, 3);
$items[] = new Point(1, 1);
$queue->setItems($items);
$queue->add(new Point(42, 222));
if ($queue->save()) {
コード例 #4
0
 public static function getNextAvailableItem($params)
 {
     $username = $params['username'];
     $projectSlug = $params['projectSlug'];
     $type = $params['type'];
     $role = $type . "er";
     $success = false;
     $errorCode = '';
     $db = Settings::getProtected('db');
     $auth = Settings::getProtected('auth');
     // Make sure we're authenticated as the user we say we are
     $auth->forceAuthentication();
     $loggedInUsername = $auth->getUsername();
     if ($username != $loggedInUsername) {
         $code = "not-authenticated-as-correct-user";
     }
     // Load user
     $user = new User($username);
     // Does this user belong to the project?
     if (!$user->isMember($projectSlug, $role)) {
         $code = "not-a-member";
     }
     // Does this user already have an item from this project?
     if ($user->hasProjectItem($projectSlug)) {
         $code = "has-unfinished-item";
     }
     // Load the user's queue
     $userQueue = new Queue("user.{$type}:{$username}", false, array('include-removed' => true));
     $userQueueItems = $userQueue->getItems();
     // Load the project's queue
     $queue = new Queue("project.{$type}:{$projectSlug}");
     $queueItems = $queue->getItems();
     // Go through the project queue and get the first item the user hasn't yet done
     foreach ($queueItems as $item) {
         if (!in_array($item, $userQueueItems)) {
             $nextItem = $item;
             break;
         }
     }
     if (isset($nextItem) && $nextItem->item_id != -1) {
         // Concatenate proofed transcripts
         if ($type == 'review') {
             // Get proofed transcripts for the new item
             $transcripts = $db->loadItemTranscripts($nextItem->project_id, $nextItem->item_id, 'proof');
             // Only diff them if there's more than one
             if (count($transcripts) > 1) {
                 $transcriptText = Transcript::diff($transcripts);
             } else {
                 $transcriptText = $transcripts[0]['transcript'];
             }
             // Only get the fields for the first transcript
             $transcriptFields = $transcripts[0]['fields'];
             // Create transcript and add to the database
             $transcript = new Transcript();
             $transcript->setText($transcriptText);
             $transcript->setFields($transcriptFields);
             $transcript->save(array('item' => $nextItem, 'status' => 'draft', 'type' => 'review'));
         }
         // Reload the user's queue, this time ignoring items they've already done
         // Add it to the user's queue
         $userQueue = new Queue("user.{$type}:{$username}", false);
         $userQueue->add($nextItem);
         $userQueue->save();
         // Remove it from the project queue
         $queue->remove($nextItem);
         $queue->save();
         $success = true;
         $code = $nextItem->item_id;
     } else {
         $code = "no-item-available";
     }
     return array('status' => $success, 'code' => $code);
 }