} else { $response = (object) array('status' => -1, 'status_explanation' => 'A user with provided email doesn\'t exist.'); } header('Content-Type: application/json'); echo json_encode($response, JSON_PRETTY_PRINT); }, $f3->get('route_ttl')); /** * Route: Find users by searching * * @example /user/reset-pass */ $f3->route('POST /find-users', function ($f3, $params) use($db) { $search = $f3->get('POST.search'); // If user exists if ($user_id = authenticated()) { $response = User::getUsersByName($search, $user_id); } else { $result = (object) array('status' => -1, 'status_explanation' => 'Insufficient data provided.'); } header('Content-Type: application/json'); echo json_encode($response, JSON_PRETTY_PRINT); }, $f3->get('route_ttl')); /** * Route: Get user information by ID * * @example /user/@id */ $f3->route('POST /user/@id', function ($f3, $params) use($db) { $id = $f3->get('PARAMS.id'); // If user sending request is authenticated if ($sender_id = authenticated()) {
} elseif (strpos($search_term, "@") !== FALSE) { //email type $search_type = "email"; } else { $search_type = "name"; //name } /** * based on the type of search, return the matched users * * */ switch ($search_type) { case "name": require_once APPLICATION_PATH . MODEL_DIR . '/User.php'; $user = new User("replicated"); $result = $user->getUsersByName($search_term, $filters); break; case "email": require_once APPLICATION_PATH . MODEL_DIR . '/Email.php'; $email = new Email("replicated"); $result = $email->getUsersByEmail($search_term, $filters); break; case "presenter_id": require_once APPLICATION_PATH . MODEL_DIR . '/Presenter.php'; $presenter = new Presenter("replicated"); $result = $presenter->getPresenterBySequenceId($search_term, $filters); break; default: break; } }
/** * Search function for Parties * Provides limited fields to display in a list of * possible matches. * This function prepares a list of party ids * based on the search type, then sends then into * _getSearchResults to get the party objects * * See _getSearchResults for structure * * @param string $search_term * @param array $filters * @param string $search_type * @return array|bool */ public function search($search_term, $filters, $search_type) { $sql = "SELECT p.id as party_id " . "FROM {$this->_table_name} p "; switch ($search_type) { case "party_name": $column_name = "name"; $sql .= "WHERE p.{$column_name} " . "LIKE CONCAT('%', :st,'%') "; break; case "party_hostess_name": require_once APPLICATION_PATH . MODEL_DIR . '/User.php'; $user = new User(); $filters["presenter_only"] = "false"; $filters["active_only"] = "false"; $user_ids_string = ''; if ($user_ids_first_name_array = $user->getUsersByName($search_term, $filters, "first", FALSE)) { $user_ids_string = implode(',', $user_ids_first_name_array); } if ($user_ids_last_name_array = $user->getUsersByName($search_term, $filters, "last", FALSE)) { if ($user_ids_string != '') { $user_ids_string .= ","; } $user_ids_string .= implode(',', $user_ids_last_name_array); } $column_name = "hostess_id"; if ($user_ids_string != '') { $sql .= " WHERE p.{$column_name} " . " IN ({$user_ids_string}) "; } else { return FALSE; } break; case "party_presenter_name": require_once APPLICATION_PATH . MODEL_DIR . '/User.php'; require_once APPLICATION_PATH . MODEL_DIR . '/Presenter.php'; $user = new User(); $presenter = new Presenter(); $filters["presenter_only"] = "false"; $filters["active_only"] = "false"; $user_ids_string = ''; if ($user_ids_first_name_array = $user->getUsersByName($search_term, $filters, "first", FALSE)) { $user_ids_string = implode(',', $user_ids_first_name_array); } if ($user_ids_last_name_array = $user->getUsersByName($search_term, $filters, "last", FALSE)) { if ($user_ids_string != '') { $user_ids_string .= ","; } $user_ids_string .= implode(',', $user_ids_last_name_array); } $presenter_ids_string = $presenter->convertUserIdsToPresenterIds($user_ids_string); $column_name = "presenter_id"; if ($user_ids_string != '') { $sql .= " WHERE p.{$column_name} " . " IN ({$presenter_ids_string}) "; } else { return FALSE; } break; case "party_presenter_sequence_id": require_once APPLICATION_PATH . MODEL_DIR . '/Presenter.php'; $presenter = new Presenter(); $presenter_id = $presenter->getIdBySequenceId($search_term); $sql .= " WHERE p.presenter_id = {$presenter_id} "; break; case "party_id": default: $party_ids = array($search_term); } if ($filters["recent_only"] != "false") { $sql .= "AND DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= p.end_time "; } if (!isset($party_ids)) { $party_ids = array(); $query = $this->_db->prepare($sql); $query->bindParam(':st', $search_term); $query->execute(); while ($row = $query->fetch()) { $party_ids[] = $row['party_id']; } } $result = array(); if (count($party_ids) > 0) { $results = $this->_getSearchResults($party_ids); } return $results; }