public static function evaluateRequirementAtom($pack) { $atom = dbconnection::queryObject("SELECT * FROM requirement_atoms WHERE requirement_atom_id = '{$pack->requirement_atom_id}'"); if (!$atom) { return false; } $atom->user_id = $pack->user_id; if ($atom->bool_operator == 0) { $atom->bool_operator = false; } if ($atom->bool_operator == 1) { $atom->bool_operator = true; } //these functions need to be defined for new schema switch ($atom->requirement) { case 'ALWAYS_TRUE': return $atom->bool_operator == true; case 'ALWAYS_FALSE': return $atom->bool_operator == false; case 'PLAYER_HAS_ITEM': return $atom->bool_operator == requirements::playerHasItem($atom); case 'PLAYER_HAS_TAGGED_ITEM': return $atom->bool_operator == requirements::playerHasTaggedItem($atom); case 'GAME_HAS_ITEM': return $atom->bool_operator == requirements::gameHasItem($atom); case 'GAME_HAS_TAGGED_ITEM': return $atom->bool_operator == requirements::gameHasTaggedItem($atom); case 'GROUP_HAS_ITEM': return $atom->bool_operator == requirements::groupHasItem($atom); case 'GROUP_HAS_TAGGED_ITEM': return $atom->bool_operator == requirements::groupHasTaggedItem($atom); case 'PLAYER_VIEWED_ITEM': return $atom->bool_operator == requirements::playerViewed($atom, "ITEM"); case 'PLAYER_VIEWED_PLAQUE': return $atom->bool_operator == requirements::playerViewed($atom, "PLAQUE"); case 'PLAYER_VIEWED_DIALOG': return $atom->bool_operator == requirements::playerViewed($atom, "DIALOG"); case 'PLAYER_VIEWED_DIALOG_SCRIPT': return $atom->bool_operator == requirements::playerViewed($atom, "DIALOG_SCRIPT"); case 'PLAYER_VIEWED_WEB_PAGE': return $atom->bool_operator == requirements::playerViewed($atom, "WEB_PAGE"); case 'PLAYER_RAN_EVENT_PACKAGE': return $atom->bool_operator == requirements::playerRanEvent($atom); case 'PLAYER_HAS_UPLOADED_MEDIA_ITEM': return $atom->bool_operator == requirements::playerUploadedAnyNear($atom); case 'PLAYER_HAS_UPLOADED_MEDIA_ITEM_IMAGE': return $atom->bool_operator == requirements::playerUploadedTypeNear($atom, "IMAGE"); case 'PLAYER_HAS_UPLOADED_MEDIA_ITEM_AUDIO': return $atom->bool_operator == requirements::playerUploadedTypeNear($atom, "AUDIO"); case 'PLAYER_HAS_UPLOADED_MEDIA_ITEM_VIDEO': return $atom->bool_operator == requirements::playerUploadedTypeNear($atom, "VIDEO"); case 'PLAYER_HAS_COMPLETED_QUEST': return $atom->bool_operator == requirements::playerCompletedQuest($atom); case 'PLAYER_HAS_RECEIVED_INCOMING_WEB_HOOK': return $atom->bool_operator == requirements::playerReceivedWebHook($atom); case 'PLAYER_HAS_NOTE': return $atom->bool_operator == requirements::playerHasNote($atom); case 'PLAYER_HAS_NOTE_WITH_TAG': return $atom->bool_operator == requirements::playerHasNoteWithTag($atom); case 'PLAYER_HAS_NOTE_WITH_LIKES': return $atom->bool_operator == requirements::playerHasNoteWithLikes($atom); case 'PLAYER_HAS_NOTE_WITH_COMMENTS': return $atom->bool_operator == requirements::playerHasNoteWithComments($atom); case 'PLAYER_HAS_GIVEN_NOTE_COMMENTS': return $atom->bool_operator == requirements::playerHasGivenNoteComments($atom); } return false; }