public function get_search_items($group_id = false) { // Override group_id if its a search $group_id = \Input::get('user_group', $group_id); if ($group_id && \Sentry::group_exists((int) $group_id)) { // Get only group users \View::set_global('group', \Sentry::group((int) $group_id)); $items = \Sentry::group((int) $group_id)->users(); } else { $items = \Sentry::user()->all('admin'); } // Reset to empty array if there are no result found by query if (is_null($items)) { $items = array(); } // Get user objects if (!empty($items)) { foreach ($items as $key => $item) { $items[$key] = \Sentry::user((int) $item['id']); } // Get search filters foreach (\Input::get() as $key => $value) { if (!empty($value) || $value == '0') { switch ($key) { case 'title': foreach ($items as $number => $item) { if (empty($item['metadata'])) { unset($items[$number]); continue; } $full_name = $item->get('metadata.first_name') . ' ' . $item->get('metadata.last_name'); if (stripos($full_name, $value) === false) { unset($items[$number]); } } break; case 'email': foreach ($items as $number => $item) { if (stripos($item->email, $value) === false) { unset($items[$number]); } } break; case 'country': if ($value && $value !== 'false') { foreach ($items as $number => $item) { if (empty($item['metadata'])) { unset($items[$number]); continue; } if (stripos($item->get('metadata.country'), $value) === false) { unset($items[$number]); } } } break; case 'postcode_from': foreach ($items as $number => $item) { if (empty($item['metadata'])) { unset($items[$number]); continue; } if ($item->get('metadata.postcode') < $value) { unset($items[$number]); } } break; case 'postcode_to': foreach ($items as $number => $item) { if (empty($item['metadata'])) { unset($items[$number]); continue; } if ($item->get('metadata.postcode') > $value) { unset($items[$number]); } } break; } } } } // Reset to empty array if there are no result found by query if (is_null($items)) { $items = array(); } // Initiate pagination $pagination = \Hybrid\Pagination::make(array('total_items' => count($items), 'per_page' => \Input::get('per_page', 10), 'uri_segment' => null)); // Remove unwanted items, and show only required ones $items = array_slice($items, $pagination->offset, $pagination->per_page); return array('items' => $items, 'pagination' => $pagination); }
public function get_search_customers($group_id = false) { // Override group_id if its a search $group_id = \Input::get('user_group', $group_id); $activated = \Input::get('activated', false); if (\Input::get()) { if ($group_id && \Sentry::group_exists((int) $group_id)) { // Get only group users \View::set_global('group', \Sentry::group((int) $group_id)); $items = \Sentry::group((int) $group_id)->users(); } else { // Get all users and remove admin users from array $items = \Sentry::user()->all('front'); } } // Reset to empty array if there are no result found by query if (empty($items)) { $items = array(); } // Get user objects if (!empty($items)) { foreach ($items as $key => $item) { $items[$key] = \Sentry::user((int) $item['id']); } // Get search filters foreach (\Input::get() as $key => $value) { if (!empty($value) || $value == '0') { switch ($key) { case 'title': foreach ($items as $number => $item) { if (empty($item['metadata'])) { unset($items[$number]); continue; } $full_name = $item->get('metadata.first_name') . ' ' . $item->get('metadata.last_name'); $customer_id = $item->get('metadata.user_id'); if (stripos($full_name, $value) === false && stripos($customer_id, $value) === false) { unset($items[$number]); } } break; case 'email': foreach ($items as $number => $item) { if (stripos($item->email, $value) === false) { unset($items[$number]); } } break; case 'country': if ($value && $value !== 'false') { foreach ($items as $number => $item) { if (empty($item['metadata'])) { unset($items[$number]); continue; } if (stripos($item->get('metadata.country'), $value) === false) { unset($items[$number]); } } } break; case 'postcode_from': foreach ($items as $number => $item) { if (empty($item['metadata'])) { unset($items[$number]); continue; } if ($item->get('metadata.postcode') < $value) { unset($items[$number]); } } break; case 'postcode_to': foreach ($items as $number => $item) { if (empty($item['metadata'])) { unset($items[$number]); continue; } if ($item->get('metadata.postcode') > $value) { unset($items[$number]); } } break; case 'activated': if ($value !== 'false') { foreach ($items as $number => $item) { if ($item->activated != $value) { unset($items[$number]); } } } break; } } } } // Reset to empty array if there are no result found by query if (empty($items)) { $items = array(); } return array('items' => $items); }