コード例 #1
0
ファイル: reports.php プロジェクト: EdgeCommerce/edgecommerce
 public function get_search_customer_products($user_id = false)
 {
     // Override group_id if its a search
     $user_id = \Input::get('user_id', $user_id);
     if ($user_id && \Sentry::user_exists((int) $user_id)) {
         $user = \Sentry::user((int) $user_id);
     }
     $items = \Order\Model_Order::find(function ($query) {
         if (isset($user)) {
             $query->where('user_id', $user->id);
         }
         //get customer only -- start
         $customer_list = \Sentry::user()->all('front');
         $customer_id_list = array();
         foreach ($customer_list as $customer) {
             array_push($customer_id_list, $customer['id']);
         }
         $query->where('user_id', 'in', $customer_id_list);
         //get customer only -- end
         $query->where('finished', '1');
         $query->order_by('id', 'desc');
     });
     foreach (\Input::get() as $key => $value) {
         if (!empty($value) || $value == '0') {
             switch ($key) {
                 case 'title':
                     if ($value != 'customer_order_select') {
                         foreach ($items as $number => $item) {
                             $full_name = $item->first_name . ' ' . $item->last_name;
                             if (stripos($item->company, $value) === false && stripos($item->id, $value) === false) {
                                 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 'order_total_from':
                     is_numeric($value) or $value == 0;
                     foreach ($items as $number => $item) {
                         $item_details = \Order\Model_Order::order_info($item->id);
                         if (isset($item_details['total_price']) && $item_details['total_price'] < $value) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'order_total_to':
                     is_numeric($value) or $value == 0;
                     foreach ($items as $number => $item) {
                         $item_details = \Order\Model_Order::order_info($item->id);
                         if (isset($item_details['total_price']) && $item_details['total_price'] > $value) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'date_from':
                     // convert format date to m/d/Y
                     $parts = explode('/', $value);
                     $value = $parts[1] . '/' . $parts[0] . '/' . $parts[2];
                     if ($date = strtotime($value)) {
                         foreach ($items as $number => $item) {
                             if ($item->created_at < $date) {
                                 unset($items[$number]);
                             }
                         }
                     }
                     break;
                 case 'date_to':
                     // convert format date to m/d/Y
                     $parts = explode('/', $value);
                     $value = $parts[1] . '/' . $parts[0] . '/' . $parts[2];
                     if ($date = strtotime($value)) {
                         foreach ($items as $number => $item) {
                             if ($item->created_at > $date) {
                                 unset($items[$number]);
                             }
                         }
                     }
                     break;
                 case 'status':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         if (stripos($item->status, $value) === false) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'tracking_no':
                     foreach ($items as $number => $item) {
                         if (!$value != '') {
                             break;
                         }
                         if (stripos($item->tracking_no, $value) === false) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'payment_method':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         if (!empty($item->last_payment)) {
                             if ($item->last_payment->method != $value) {
                                 unset($items[$number]);
                             }
                         }
                     }
                     break;
                 case 'user_group':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         if ($item->user_id && \Sentry::user_exists((int) $item->user_id)) {
                             $user = \Sentry::user((int) $item->user_id);
                             if ($user->in_group($value)) {
                                 unset($items[$number]);
                             }
                         }
                     }
                     break;
                 case 'country':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         if (stripos($item->country, $value) === false) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'state':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         if (stripos($item->country, $value) === false) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'product_category':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         // Get order products
                         if (!empty($item->products)) {
                             $exists = array();
                             foreach ($item->products as $product) {
                                 // Find category
                                 if (\Product\Model_Product_To_Categories::find(array('where' => array('product_id' => $product->product_id, 'category_id' => $value)))) {
                                     $exists[] = $product->id;
                                 }
                             }
                             if (empty($exists)) {
                                 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);
 }
コード例 #2
0
ファイル: order.php プロジェクト: EdgeCommerce/edgecommerce
 public function get_search_items($user_id = false)
 {
     // Override group_id if its a search
     $user_id = \Input::get('user_id', $user_id);
     if ($user_id && \Sentry::user_exists((int) $user_id)) {
         $user = \Sentry::user((int) $user_id);
     }
     $items = \Order\Model_Order::find(function ($query) {
         if (isset($user)) {
             $query->where('user_id', $user->id);
         }
         $query->where('finished', '1');
         $query->order_by('id', 'desc');
     });
     foreach (\Input::get() as $key => $value) {
         if (!empty($value) || $value == '0') {
             switch ($key) {
                 case 'title':
                     foreach ($items as $number => $item) {
                         $full_name = $item->first_name . ' ' . $item->last_name;
                         if (stripos($item->company, $value) === false && stripos($item->id, $value) === false) {
                             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 'order_total_from':
                     is_numeric($value) or $value == 0;
                     foreach ($items as $number => $item) {
                         $item_details = \Order\Model_Order::order_info($item->id);
                         if (isset($item_details['total_price']) && $item_details['total_price'] < $value) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'order_total_to':
                     is_numeric($value) or $value == 0;
                     foreach ($items as $number => $item) {
                         $item_details = \Order\Model_Order::order_info($item->id);
                         if (isset($item_details['total_price']) && $item_details['total_price'] > $value) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'date_from':
                     // convert format date to m/d/Y
                     $parts = explode('/', $value);
                     $value = $parts[1] . '/' . $parts[0] . '/' . $parts[2];
                     if ($date = strtotime($value)) {
                         foreach ($items as $number => $item) {
                             if ($item->created_at < $date) {
                                 unset($items[$number]);
                             }
                         }
                     }
                     break;
                 case 'date_to':
                     // convert format date to m/d/Y
                     $parts = explode('/', $value);
                     $value = $parts[1] . '/' . $parts[0] . '/' . $parts[2];
                     if ($date = strtotime($value)) {
                         foreach ($items as $number => $item) {
                             if ($item->created_at > $date) {
                                 unset($items[$number]);
                             }
                         }
                     }
                     break;
                 case 'status':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         if (stripos($item->status, $value) === false) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'tracking_no':
                     foreach ($items as $number => $item) {
                         if (!$value != '') {
                             break;
                         }
                         if (stripos($item->tracking_no, $value) === false) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'payment_method':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         if (!empty($item->last_payment)) {
                             if ($item->last_payment->method != $value) {
                                 unset($items[$number]);
                             }
                         }
                     }
                     break;
                 case 'user_group':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         if ($item->user_id && \Sentry::user_exists((int) $item->user_id)) {
                             $user = \Sentry::user((int) $item->user_id);
                             if ($user->in_group($value)) {
                                 unset($items[$number]);
                             }
                         }
                     }
                     break;
                 case 'country':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         if (stripos($item->country, $value) === false) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'state':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         if (stripos($item->country, $value) === false) {
                             unset($items[$number]);
                         }
                     }
                     break;
                 case 'product_category':
                     foreach ($items as $number => $item) {
                         if ($value == 'false') {
                             break;
                         }
                         // Get order products
                         if (!empty($item->products)) {
                             $exists = array();
                             foreach ($item->products as $product) {
                                 // Find category
                                 if (\Product\Model_Product_To_Categories::find(array('where' => array('product_id' => $product->product_id, 'category_id' => $value)))) {
                                     $exists[] = $product->id;
                                 }
                             }
                             if (empty($exists)) {
                                 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);
 }