Ejemplo n.º 1
0
 /**
  * Get additional content data selected
  * 
  * @param $result = Query result
  */
 public static function post_find($result)
 {
     if ($result !== null) {
         if (is_array($result)) {
             foreach ($result as $item) {
                 // It will first check if we already have result in temporary result,
                 // and only execute query if we dont. That way we dont have duplicate queries
                 // Get related products
                 $item->get_products = static::lazy_load(function () use($item) {
                     $products = Model_Product_To_Groups::find(function ($query) use($item) {
                         return $query->where('group_id', $item->id);
                     }, 'product_id');
                     if (!empty($products)) {
                         $products = '(' . implode(',', array_keys($products)) . ')';
                         return Model_Product::find(function ($query) use($products, $item) {
                             $query->where('id', 'IN', \DB::expr($products));
                             $query->order_by('sort', 'asc');
                             return $query;
                         }, 'id');
                     }
                     return array();
                 }, $item->id, 'products');
                 // Get content children
                 $item->get_children = static::lazy_load(function () use($item) {
                     return Model_Group::find(array('where' => array('parent_id' => $item->id), 'order_by' => array('sort' => 'asc')));
                 }, $item->id, 'children');
                 // Get group images
                 $item->get_images = static::lazy_load(function () use($item) {
                     return Model_Group_Image::find(array('where' => array('content_id' => $item->id), 'order_by' => array('sort' => 'asc')));
                 }, $item->id, 'images');
                 // Get product groups
                 $item->get_product_groups = static::lazy_load(function () use($item) {
                     $product_groups = \Product\Model_Group::find_by_type('discount');
                     foreach ($product_groups as $product_group) {
                         $product_group->set_user_group_id($item->id);
                     }
                     return $product_groups;
                 }, $item->id, 'product_groups');
             }
         }
     }
     // return the result
     return $result;
 }
Ejemplo n.º 2
0
 /**
  * Delete content image
  *
  * @param $image_id		= Image ID
  * @param $content_id	= Content ID
  */
 public function action_delete_image($image_id = false, $content_id = false)
 {
     if ($image_id && $content_id) {
         $images = Model_Group_Image::find(array('where' => array('content_id' => $content_id), 'order_by' => array('sort' => 'asc')), 'id');
         if ($images) {
             if (isset($images[$image_id])) {
                 $image = $images[$image_id];
                 // If there is only one image and image is required
                 if (count($images) == 1) {
                     if (\Config::get('details.image.required', false)) {
                         \Messages::error('You can\'t delete all images. Please add new image in order to delete this one.');
                     } else {
                         // Reset sort fields
                         \DB::update(Model_Group_Image::get_protected('_table_name'))->value('sort', \DB::expr('sort - 1'))->where('sort', '>', $image->sort)->execute();
                         // Delete image
                         $this->delete_image($image->image);
                         $image->delete();
                         \Messages::success('Image was successfully deleted.');
                     }
                 } else {
                     if ($image->cover == 1) {
                         \Messages::error('You can\'t delete cover image. Set different image as cover in order to delete this one.');
                     } else {
                         // Reset sort fields
                         \DB::update(Model_Group_Image::get_protected('_table_name'))->value('sort', \DB::expr('sort - 1'))->where('sort', '>', $image->sort)->execute();
                         // Delete image
                         $this->delete_image($image->image);
                         $image->delete();
                         \Messages::success('Image was successfully deleted.');
                     }
                 }
             } else {
                 \Messages::error('Image you are trying to delete don\'t exists. Check your url and try again.');
             }
         } else {
             \Messages::error('Group Image you are trying to delete don\'t exists. Check your url and try again.');
         }
     }
     \Response::redirect(\Input::referrer());
 }
Ejemplo n.º 3
0
 /**
  * Get additional content data selected
  * 
  * @param $result = Query result
  */
 public static function post_find($result)
 {
     if ($result !== null) {
         if (is_array($result)) {
             foreach ($result as $item) {
                 // It will first check if we already have result in temporary result,
                 // and only execute query if we dont. That way we dont have duplicate queries
                 // Get related products
                 $item->get_products = static::lazy_load(function () use($item) {
                     $products = Model_Product_To_Groups::find(function ($query) use($item) {
                         return $query->where('group_id', $item->id);
                     }, 'product_id');
                     if (!empty($products)) {
                         $products = '(' . implode(',', array_keys($products)) . ')';
                         return Model_Product::find(function ($query) use($products, $item) {
                             $query->where('id', 'IN', \DB::expr($products));
                             $query->order_by('sort', 'asc');
                             return $query;
                         }, 'id');
                     }
                     return array();
                 }, $item->id, 'products');
                 // Get content children
                 $item->get_children = static::lazy_load(function () use($item) {
                     return Model_Group::find(array('where' => array('parent_id' => $item->id), 'order_by' => array('sort' => 'asc')));
                 }, $item->id, 'children');
                 // Get group images
                 $item->get_images = static::lazy_load(function () use($item) {
                     return Model_Group_Image::find(array('where' => array('content_id' => $item->id), 'order_by' => array('sort' => 'asc')));
                 }, $item->id, 'images');
                 // Get group discount options
                 // Use one more item property (user_group_id)
                 // It can be set using methods (set_user_group_id and get_user_group_id)
                 $item->get_discount_options = static::lazy_load(function () use($item) {
                     $options = Model_Group_Options::find(array('where' => array('user_group_id' => $item->get_user_group_id(), 'product_group_id' => $item->id)));
                     return isset($options[0]) ? $options[0] : array();
                 }, $item->id, 'discount_options', 'object');
                 // Get group discount options
                 // Use one more item property (user_group_id)
                 // It can be set using methods (set_user_group_id and get_user_group_id)
                 $item->get_discounts = static::lazy_load(function () use($item) {
                     return Model_Group_Discounts::find(array('where' => array('user_group_id' => $item->get_user_group_id(), 'product_group_id' => $item->id), 'order_by' => array('qty' => 'asc')), 'qty');
                 }, $item->id, 'discounts');
                 // DO NOT CHANGE THIS TWO FUNCTIONS AS THEY ARE NEEDED
                 $item->set_user_group_id = function ($user_group_id = NULL) {
                     \Product\Model_Group::$user_group_id = $user_group_id;
                 };
                 $item->get_user_group_id = function () {
                     return \Product\Model_Group::$user_group_id;
                 };
             }
         }
     }
     // return the result
     return $result;
 }