예제 #1
0
 /**
  * recipeDetail
  */
 public function recipeDetail($recipe_id)
 {
     if (!is_numeric($recipe_id)) {
         return false;
     }
     $Recipe = new ecommerce_recipe();
     $recipe = $Recipe->getDetail($recipe_id);
     if ($recipe) {
         /**
          * get taxonomy_class
          */
         $related_taxonomy = $Recipe->getRelatedTaxonomy($recipe_id);
         $recipe['taxonomy_class'] = $this->createTaxonomyClass($related_taxonomy);
         /**
          * save product taxonomy_class to registry
          */
         $this->saveBodyCssClass($recipe['taxonomy_class']);
         /**
          * singular/plurar text
          */
         $recipe['persons'] = $recipe['serving_people'] == 1 ? 'person' : 'persons';
         $recipe['minutes'] = $recipe['cooking_time'] == 1 ? 'minute' : 'minutes';
         $this->tpl->assign("RECIPE", $recipe);
         /**
          * video
          */
         if (!empty($recipe['video_url'])) {
             $video_url = urlencode($recipe['video_url']);
             $_Onxshop_Request = new Onxshop_Request("component/video~video_url={$video_url}~");
             $this->tpl->assign('RECIPE_VIDEO', $_Onxshop_Request->getContent());
         }
     }
     return true;
 }
예제 #2
0
 /**
  * getCategories
  */
 static function getCategories($recipe_id)
 {
     if (!is_numeric($recipe_id)) {
         return false;
     }
     require_once 'models/ecommerce/ecommerce_recipe.php';
     $Recipe = new ecommerce_recipe();
     return $Recipe->getRelatedTaxonomy($recipe_id);
 }
예제 #3
0
 /**
  * get data
  */
 public function getData()
 {
     /**
      * initialize
      */
     require_once 'models/ecommerce/ecommerce_recipe.php';
     $Recipe = new ecommerce_recipe();
     /**
      * get recipe page posts
      */
     $list = $Recipe->getFilteredRecipeList(false, false, false, false, 10000);
     $data = array();
     foreach ($list as $item) {
         $item = $this->formatItem($item);
         $data[] = $item;
     }
     return $data;
 }
예제 #4
0
 /**
  * main action
  */
 public function mainAction()
 {
     // initialize
     require_once 'models/ecommerce/ecommerce_recipe.php';
     $Recipe = new ecommerce_recipe();
     // save
     if ($_POST['save']) {
         // update recipe
         if ($recipe_id = $Recipe->updateRecipe($_POST['recipe'])) {
             msg("Recipe ID={$recipe_id} updated");
             // forward to recipe list main page and exit
             onxshopGoTo("/backoffice/recipes");
             return true;
         }
     }
     // recipe detail
     $recipe = $Recipe->detail($this->GET['id']);
     $recipe['publish'] = $recipe['publish'] == 1 ? 'checked="checked" ' : '';
     $this->tpl->assign('RECIPE', $recipe);
     return true;
 }
예제 #5
0
 /**
  * insert recipe to node
  */
 function insertNewRecipeToNode($recipe_id, $parent_id)
 {
     if (!is_numeric($recipe_id)) {
         return false;
     }
     if (!is_numeric($parent_id)) {
         return false;
     }
     $Node = new common_node();
     $Recipe = new ecommerce_recipe();
     /**
      * get recipe detail
      */
     $recipe_detail = $Recipe->detail($recipe_id);
     /**
      * prepare node data
      */
     $recipe_node['title'] = $recipe_detail['title'];
     $recipe_node['parent'] = $parent_id;
     $recipe_node['parent_container'] = 0;
     $recipe_node['node_group'] = 'page';
     $recipe_node['node_controller'] = 'recipe';
     $recipe_node['content'] = $recipe_id;
     //$recipe_node['layout_style'] = $Node->conf['page_recipe_layout_style'];
     //this need to be updated on each recipe update
     $recipe_node['priority'] = $recipe_detail['priority'];
     $recipe_node['publish'] = $recipe_detail['publish'];
     /**
      * insert node
      */
     if ($recipe_homepage = $Node->nodeInsert($recipe_node)) {
         return $recipe_homepage;
     } else {
         msg("Can't add recipe to node.");
         return false;
     }
 }
예제 #6
0
 /**
  * load recipe details
  */
 protected function getRecipeDetails(&$page)
 {
     $recipe_id = $page['content'];
     if (!is_numeric($recipe_id)) {
         return false;
     }
     require_once "models/ecommerce/ecommerce_recipe.php";
     $Recipe = new ecommerce_recipe();
     $recipe = $Recipe->detail($recipe_id);
     $page['excerpt'] = $this->highlightKeywords(strip_tags($recipe['description']), $this->keywords);
     $page['type_priority'] = 100;
     $page['priority'] = $recipe['priority'];
 }
예제 #7
0
 /**
  * main action (only a router in this case)
  */
 public function mainAction()
 {
     // init models
     $Recipe = new ecommerce_recipe();
     // get taxonomy ids
     if (empty($this->GET['taxonomy_tree_id'])) {
         $taxonomy_ids = array();
     } else {
         $taxonomy_ids = explode(",", $this->GET['taxonomy_tree_id']);
         // validate input
         if (!is_array($taxonomy_ids)) {
             return false;
         }
         foreach ($taxonomy_ids as $taxonomy_id) {
             if (!is_numeric($taxonomy_id)) {
                 return false;
             }
         }
     }
     // is there a limit?
     if (is_numeric($this->GET['limit_from'])) {
         $limit_from = $this->GET['limit_from'];
     } else {
         $limit_from = 0;
     }
     if (is_numeric($this->GET['limit_per_page'])) {
         $limit_per_page = $this->GET['limit_per_page'];
     } else {
         $limit_per_page = 25;
     }
     // is there requested sorting?
     if ($this->GET['sort']['by'] && in_array($this->GET['sort']['by'], array('title', 'created', 'modified', 'priority', 'share_counter'))) {
         $sort_by = $this->GET['sort']['by'];
     } else {
         $sort_by = 'modified';
     }
     if ($this->GET['sort']['direction'] && in_array($this->GET['sort']['direction'], array('DESC', 'ASC'))) {
         $sort_direction = $this->GET['sort']['direction'];
     } else {
         $sort_direction = 'DESC';
     }
     // image role
     if ($this->GET['image_role']) {
         $image_role = $this->GET['image_role'];
     } else {
         $image_role = 'teaser';
     }
     // disjunctive (0 for OR, 1 for AND)
     if (is_numeric($this->GET['conjunction']) && $this->GET['conjunction'] == 0) {
         $conjunction = false;
     } else {
         $conjunction = true;
     }
     /**
      * get the list
      */
     $list = $Recipe->getRecipeListForTaxonomy($taxonomy_ids, $sort_by, $sort_direction, $limit_from, $limit_per_page, $image_role, $conjunction);
     $this->parseItems($list);
     if ($this->GET['display_pagination'] == 1) {
         $count = $Recipe->getRecipeCountForTaxonomy($taxonomy_ids);
         $_Onxshop_Request = new Onxshop_Request("component/pagination~limit_from={$limit_from}:limit_per_page={$limit_per_page}:count={$count}~");
         $this->tpl->assign('PAGINATION', $_Onxshop_Request->getContent());
     }
     return true;
 }
예제 #8
0
 /**
  * main action
  */
 public function mainAction()
 {
     // initialize filter variables
     $taxonomy_id = $this->GET['taxonomy_tree_id'];
     if (isset($_POST['recipe-list-filter'])) {
         $_SESSION['bo']['recipe-list-filter'] = $_POST['recipe-list-filter'];
     }
     $keyword = $_SESSION['bo']['recipe-list-filter']['keyword'];
     // initialize sorting variables
     if ($this->GET['recipe-list-sort-by']) {
         $_SESSION['bo']['recipe-list-sort-by'] = $this->GET['recipe-list-sort-by'];
     }
     if ($this->GET['recipe-list-sort-direction']) {
         $_SESSION['bo']['recipe-list-sort-direction'] = $this->GET['recipe-list-sort-direction'];
     }
     if ($_SESSION['bo']['recipe-list-sort-by']) {
         $order_by = $_SESSION['bo']['recipe-list-sort-by'];
     } else {
         $order_by = 'modified';
     }
     if ($_SESSION['bo']['recipe-list-sort-direction']) {
         $order_dir = $_SESSION['bo']['recipe-list-sort-direction'];
     } else {
         $order_dir = 'DESC';
     }
     // initialize pagination variables
     if (is_numeric($this->GET['limit_from'])) {
         $from = $this->GET['limit_from'];
     } else {
         $from = 0;
     }
     if (is_numeric($this->GET['limit_per_page'])) {
         $per_page = $this->GET['limit_per_page'];
     } else {
         $per_page = 25;
     }
     // get the list
     require_once 'models/ecommerce/ecommerce_recipe.php';
     $Recipe = new ecommerce_recipe();
     $recipe_list = $Recipe->getFilteredRecipeList($keyword, false, $taxonomy_id, false, $per_page, $from, $order_by, $order_dir, 0);
     $count = $Recipe->getFilteredRecipeCount($keyword, false, $taxonomy_id, false, 0);
     if (!is_array($recipe_list)) {
         return false;
     }
     if (count($recipe_list) == 0) {
         $this->tpl->parse('content.empty_list');
         return true;
     }
     // display pagination
     $_nSite = new nSite("component/pagination~link=/request/bo/component/ecommerce/recipe_list:limit_from={$from}:limit_per_page={$per_page}:count={$count}~");
     $this->tpl->assign('PAGINATION', $_nSite->getContent());
     // parse items
     foreach ($recipe_list as $item) {
         $item['modified'] = date("d/m/Y H:i", strtotime($item['modified']));
         $this->tpl->assign('ITEM', $item);
         if ($item['image']['src']) {
             $this->tpl->parse('content.list.item.image');
         }
         $this->tpl->assign('CLASS', $item['publish'] == 0 ? 'class="publish_0"' : "");
         $this->tpl->parse('content.list.item');
     }
     $this->tpl->parse('content.list');
     return true;
 }
예제 #9
0
 /**
  * getCategories
  */
 static function getCategories($recipe_id)
 {
     if (!is_numeric($recipe_id)) {
         return false;
     }
     require_once 'models/ecommerce/ecommerce_recipe.php';
     $Recipe = new ecommerce_recipe();
     $categories_system = $Recipe->getRelatedTaxonomy($recipe_id);
     $categories = array();
     foreach ($categories_system as $k => $item) {
         $categories[$k] = array();
         $categories[$k]['id'] = $item['id'];
         $categories[$k]['title'] = $item['title'];
         $categories[$k]['priority'] = $item['priority'];
         $categories[$k]['usage_count'] = 0;
     }
     /**
      * historic reasons...
      */
     if (count($categories) == 0) {
         $categories[0] = array();
         $categories[0]['id'] = 1;
         $categories[0]['title'] = 'Uncategorised';
         $categories[0]['priority'] = 0;
         $categories[0]['usage_count'] = 0;
     }
     return $categories;
 }
예제 #10
0
 /**
  * Find homepage of recipe
  */
 function getRecipeNodeHomepage($recipe_id)
 {
     if (!is_numeric($recipe_id)) {
         msg("Node->getRecipeNodeHomepage({$product_id}) is not numeric", 'error');
         return false;
     } else {
         require_once "models/ecommerce/ecommerce_recipe.php";
         $Recipe = new ecommerce_recipe();
         $homepage = $Recipe->getRecipeHomepage($recipe_id);
         return $homepage;
     }
 }
예제 #11
0
 /**
  * move recipe node
  */
 function moveRecipeNode($recipe_id, $parent_id)
 {
     if (!is_numeric($recipe_id)) {
         return false;
     }
     if (!is_numeric($parent_id)) {
         return false;
     }
     $Node = new common_node();
     $Recipe = new ecommerce_recipe();
     /**
      * get current detail
      */
     $recipe_homepage = $Recipe->getRecipeHomepage($recipe_id);
     /**
      * modify node data
      */
     $recipe_homepage['parent'] = $parent_id;
     if ($Node->nodeUpdate($recipe_homepage)) {
         msg("Recipe node has been updated", 'ok');
         return $recipe_homepage;
     } else {
         msg("Can't update recipe node.");
         return false;
     }
 }