当前位置: 首页>>代码示例>>PHP>>正文


PHP Queue::getItems方法代码示例

本文整理汇总了PHP中Queue::getItems方法的典型用法代码示例。如果您正苦于以下问题:PHP Queue::getItems方法的具体用法?PHP Queue::getItems怎么用?PHP Queue::getItems使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Queue的用法示例。


在下文中一共展示了Queue::getItems方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: userDashboard

 public static function userDashboard($params)
 {
     $format = $params['args'][1] != '' ? $params['args'][1] : 'html';
     $app_url = Settings::getProtected('app_url');
     $user = User::getAuthenticatedUser();
     // Put it in the settings cache
     Settings::setProtected('username', $user->username);
     // Set up proofing and reviewing objects
     $proofing = array();
     $reviewing = array();
     // Load the user's proofing queue
     $proofQueue = new Queue("user.proof:{$user->username}");
     $proofing['items'] = array();
     foreach ($proofQueue->getItems() as $item) {
         array_push($proofing['items'], array('title' => $item->title, 'status' => $item->status, 'project_slug' => $item->project_slug, 'project_type' => $item->project_type, 'project_owner' => $item->project_owner, 'item_id' => $item->item_id, 'type' => $item->type));
     }
     // Load the user's reviewing queue
     $reviewQueue = new Queue("user.review:{$user->username}");
     $reviewing['items'] = array();
     foreach ($reviewQueue->getItems() as $item) {
         array_push($reviewing['items'], array('title' => $item->title, 'status' => $item->status, 'project_slug' => $item->project_slug, 'project_type' => $item->project_type, 'project_owner' => $item->project_owner, 'item_id' => $item->item_id, 'type' => $item->type));
     }
     // Add extra info (edit link and slug) to each item
     $prooflist = array();
     foreach ($proofing['items'] as &$item) {
         if ($item['project_type'] == 'system') {
             $item['editlink'] = $app_url . '/projects/' . $item['project_slug'] . '/items/' . $item['item_id'] . '/proof';
         } else {
             if ($item['project_type'] == 'user') {
                 $item['editlink'] = $app_url . '/users/' . $item['project_owner'] . '/projects/' . $item['project_slug'] . '/items/' . $item['item_id'] . '/proof';
             }
         }
         if (!in_array($item['project_slug'], $prooflist)) {
             $prooflist[] = $item['project_slug'];
         }
     }
     $reviewlist = array();
     foreach ($reviewing['items'] as &$item) {
         if ($item['project_type'] == 'system') {
             $item['editlink'] = $app_url . '/projects/' . $item['project_slug'] . '/items/' . $item['item_id'] . '/review';
         } else {
             if ($item['project_type'] == 'user') {
                 $item['editlink'] = $app_url . '/users/' . $item['project_owner'] . '/projects/' . $item['project_slug'] . '/items/' . $item['item_id'] . '/review';
             }
         }
         if (!in_array($item['project_slug'], $reviewlist)) {
             $reviewlist[] = $item["project_slug"];
         }
     }
     // Add link and percentages to each project
     $projects = $user->getProjectSummaries();
     $projectInfo = array();
     $proofing['projects'] = array();
     $reviewing['projects'] = array();
     foreach ($projects as &$project) {
         $roles = $user->getRolesForProject($project['slug']);
         // If the project is available for proofing or reviewing (with no items already claimed),
         // then add it to the appropriate list
         if (!in_array($project["slug"], $prooflist) && $project["available_to_proof"] > 0 && in_array('proofer', $roles)) {
             array_push($proofing['projects'], $project['slug']);
         }
         if (!in_array($project["slug"], $reviewlist) && $project["available_to_review"] > 0 && in_array('reviewer', $roles)) {
             array_push($reviewing['projects'], $project['slug']);
         }
         // Set up percentage bars
         if ($project['num_items'] == 0) {
             $project['percent_proofed'] = 0;
             $project['percent_reviewed'] = 0;
         } else {
             $project['percent_proofed'] = round($project['num_proofed'] / $project['num_items'] * 100, 0);
             $project['percent_reviewed'] = round($project['num_reviewed'] / $project['num_items'] * 100, 0);
         }
         // And the project link
         if ($project['type'] == 'system') {
             $project['link'] = $app_url . '/projects/' . $project['slug'];
         } else {
             if ($project['type'] == 'user') {
                 $project['link'] = $app_url . '/users/' . $project['owner'] . '/projects/' . $project['slug'];
             }
         }
         $projectInfo[$project['slug']] = $project;
     }
     // Blank slate condition if there are no items and no projects
     $proofing['blankslate'] = count($proofing['items']) == 0 && count($proofing['projects']) == 0 ? true : false;
     $reviewing['blankslate'] = count($reviewing['items']) == 0 && count($reviewing['projects']) == 0 ? true : false;
     // Get the user's history and the top proofers information
     $history = $user->getHistory();
     $topusers = User::getTopUsers();
     // Prepare user history
     foreach ($history as &$event) {
         if ($event['project_type'] == 'system') {
             $event['editlink'] = "{$app_url}/projects/" . $event['project_slug'] . '/items/' . $event['item_id'] . '/proof';
         } else {
             if ($project['type'] == 'user') {
                 $event['editlink'] = "{$app_url}/users/" . $event['project_owner'] . '/projects/' . $event['project_slug'] . '/items/' . $event['item_id'] . '/proof';
             }
         }
         $event['title'] = $event['item_title'];
     }
     $response = array('page_title' => 'Dashboard', 'user' => $user->getResponse(), 'projects' => $projectInfo, 'proofing' => array('items' => $proofing['items'], 'projects' => $proofing['projects'], 'blankslate' => $proofing['blankslate']), 'reviewing' => array('items' => $reviewing['items'], 'projects' => $reviewing['projects'], 'blankslate' => $reviewing['blankslate']), 'history' => $history, 'history_count' => count($history), 'registered_methods' => array('/users/' . $user->username), 'topusers' => $topusers);
//.........这里部分代码省略.........
开发者ID:hmmbug,项目名称:unbindery,代码行数:101,代码来源:UserPageController.class.php

示例2: testRealUseCaseExample2

 public function testRealUseCaseExample2()
 {
     $message1 = new ExampleMessageObject();
     $message1->int = 1;
     $message1->float = 1.1;
     $message1->string = 'something1';
     $message1->bool = true;
     $message1Serialized = serialize($message1);
     $message2 = new ExampleMessageObject();
     $message2->int = 3;
     $message2->float = 3.3;
     $message2->string = 'something2';
     $message2->bool = false;
     $message2Serialized = serialize($message2);
     $message3 = new ExampleMessageObject();
     $message3->int = 4;
     $message3->float = 4.4;
     $message3->string = 'something3';
     $message3->bool = true;
     $message3Serialized = serialize($message3);
     $message4 = new ExampleMessageObject();
     $message4->int = 5;
     $message4->float = 5.5;
     $message4->string = 'something4';
     $message4->bool = false;
     $message4Serialized = serialize($message4);
     $message5 = new ExampleMessageObject();
     $message5->int = 6;
     $message5->float = 6.6;
     $message5->string = 'something5';
     $message5->bool = true;
     $message5Serialized = serialize($message5);
     $time = time();
     $queue = new Queue($this->redis, 'test');
     $processingQueue = sprintf('test-processing-%s[%d][%d]', gethostname(), getmypid(), $time);
     $queue->addItems([$message1, $message2, $message3, $message1, $message4, $message5]);
     $items = $queue->getItems(4);
     $this->assertSame([$message1Serialized, $message2Serialized, $message3Serialized, $message1Serialized], $items);
     $this->assertSame([$message5Serialized, $message4Serialized], $this->redis->lrange('test', 0, 5));
     $this->assertSame([$message1Serialized, $message3Serialized, $message2Serialized, $message1Serialized], $this->redis->lrange($processingQueue, 0, 10));
     $this->assertKeys(['test', $processingQueue, 'test-timeouts']);
     $queue->ackItem($message1);
     $queue->ackItems([$message2, $message3]);
     $queue->rejectBatch();
     $this->assertSame([$message5Serialized, $message4Serialized, $message1Serialized], $this->redis->lrange('test', 0, 5));
     $this->assertKeys(['test']);
     $items = $queue->getItems(5);
     $this->assertSame([$message1Serialized, $message4Serialized, $message5Serialized], $items);
     $this->assertSame([$message5Serialized, $message4Serialized, $message1Serialized], $this->redis->lrange($processingQueue, 0, 5));
     $this->assertKeys([$processingQueue, 'test-timeouts']);
     $queue->ackItems([$message1Serialized, $message4Serialized, $message5Serialized]);
     $this->assertKeys([]);
 }
开发者ID:jannavratil,项目名称:php-rq,代码行数:53,代码来源:QueueTest.php

示例3: itemProof

 public static function itemProof($params)
 {
     $i18n = Settings::getProtected('i18n');
     $format = Utils::getFormat($params['args'], 0, 2);
     $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];
     $proofTypeIndex = $projectType == 'system' ? 2 : 4;
     $proofType = $params['args'][$proofTypeIndex];
     $role = $proofType . "er";
     $proofUserIndex = $projectType == 'system' ? 3 : 5;
     $proofUser = array_key_exists($proofUserIndex, $params['args']) ? $params['args'][$proofUserIndex] : '';
     $owner = $projectType == 'user' ? $params['args'][1] : '';
     $user = User::getAuthenticatedUser();
     switch ($params['method']) {
         // GET: Get proof/review/edit page for this item
         case 'GET':
             // Make sure they have access to the item
             if ($proofType == 'edit' || $proofUser != '') {
                 // For editing an item or a specific proof/review, user must be project admin or site admin
                 RoleController::forceClearance(array('project.admin', 'project.owner', 'system.admin'), $user, array('project' => $project));
             } else {
                 // User has to be a member of the project
                 if (!$user->isMember($projectSlug, $role)) {
                     Utils::redirectToDashboard("", $i18n->t("error.not_a_member"));
                     return;
                 }
             }
             // If we're looking at an existing proof/review, load it for that user
             // Otherwise load it for the existing user
             $username = $proofUser != '' ? $proofUser : $user->username;
             // Load the item
             $itemObj = new Item($itemId, $projectSlug, $username, $proofType);
             // Make sure it exists (if it fails, it'll return a boolean)
             if ($itemObj->item_id == -1) {
                 Utils::redirectToDashboard("", $i18n->t("error.nonexistent_item"));
                 return;
             }
             $alreadyFinished = false;
             $moreToProof = false;
             if ($proofType != 'edit' && $proofUser == '') {
                 // If it's not in their current queue, they're editing it after finishing it
                 // TODO: Make this part more elegant
                 $userCurrentQueue = new Queue("user.{$proofType}:{$user->username}", false);
                 $userCurrentQueueItems = $userCurrentQueue->getItems();
                 if (!in_array($itemObj, $userCurrentQueueItems)) {
                     $alreadyFinished = true;
                 }
                 // And if it's not in their full queue, they never had it and shouldn't be allowed to proof it
                 $userQueue = new Queue("user.{$proofType}:{$user->username}", false, array('include-removed' => true));
                 $userQueueItems = $userQueue->getItems();
                 if (!in_array($itemObj, $userQueueItems)) {
                     Utils::redirectToDashboard("", $i18n->t("error.insufficient_rights"));
                     return;
                 }
                 // See if there are any items left for us to proof
                 $queue = new Queue("project.{$proofType}:{$projectSlug}");
                 foreach ($queue->getItems() as $item) {
                     if (!in_array($item, $userQueueItems)) {
                         $moreToProof = true;
                         break;
                     }
                 }
             }
             $item = array();
             $item['id'] = $itemId;
             $item['title'] = $itemObj->title;
             // If the user has a transcript for this item, load it instead
             if ($itemObj->userTranscript && trim($itemObj->userTranscript['transcript']) != '') {
                 $transcript = trim($itemObj->userTranscript['transcript']);
             } else {
                 $transcript = trim($itemObj->transcript);
             }
             $item['transcript'] = stripslashes($transcript);
             // Get fields, if any
             if ($itemObj->userTranscript && trim($itemObj->userTranscript['fields']) != '') {
                 $itemFields = json_decode(trim($itemObj->userTranscript['fields']), true);
             } else {
                 $itemFields = array();
             }
             $item['fields'] = $itemFields;
             // Prepare the URL
             $appUrl = Settings::getProtected('app_url');
             if ($projectType == 'system') {
                 $projectUrl = "projects/{$projectSlug}";
             } else {
                 if ($projectType == 'user') {
                     $projectUrl = "users/{$owner}/{$projectSlug}";
                 }
             }
             $item['href'] = $projectUrl . "/" . $itemObj->href;
             // Get template type
             $templateType = $itemObj->type;
             // Get project fields and parse out
             $fields = array();
             $fieldsText = trim($project->fields);
             if ($fieldsText != '') {
//.........这里部分代码省略.........
开发者ID:hmmbug,项目名称:unbindery,代码行数:101,代码来源:ItemPageController.class.php

示例4: json_encode

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()) {
    echo "\nsaved.\n";
}
echo "test 2 done\n\n";
$queue->destroy();
开发者ID:hmmbug,项目名称:unbindery,代码行数:31,代码来源:queue-test.php

示例5: getNextAvailableItem

 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);
 }
开发者ID:hmmbug,项目名称:unbindery,代码行数:73,代码来源:DispatchController.class.php


注:本文中的Queue::getItems方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。