/** * get data */ public function getData() { /** * input */ if (is_numeric($this->GET['recipe_id'])) { $recipe_id = $this->GET['recipe_id']; } else { //msg("missing recipe_id", 'error'); $data = array(); $data['message'] = "missing recipe_id"; $data['status'] = 400; return $data; } /** * initialize */ require_once 'models/ecommerce/ecommerce_recipe.php'; $Recipe = new ecommerce_recipe(); /** * get recipe detail */ $item = $Recipe->getDetail($recipe_id); /** * get recipe image */ require_once 'models/ecommerce/ecommerce_recipe_image.php'; $Image = new ecommerce_recipe_image(); $images = $Image->listFiles($item['id']); if (count($images) > 0) { $item['image']['src'] = $images[0]['src']; $item['image']['title'] = $images[0]['title']; } /** * return the result */ if ($item['publish'] == 1) { return $this->formatItem($item); } else { return array(); } return $data; }
/** * Find where the file is used * * @param string $file * file src * * @return array * file using places list */ function getRelations($file) { require_once 'models/common/common_file.php'; $CommonFile = new common_file(); $file_list['file'] = $CommonFile->getFileLink($file); require_once 'models/common/common_image.php'; $CommonImage = new common_image(); $file_list['node'] = $CommonImage->getFileLink($file); require_once 'models/ecommerce/ecommerce_product_image.php'; $ProductImage = new ecommerce_product_image(); $file_list['product'] = $ProductImage->getFileLink($file); require_once 'models/ecommerce/ecommerce_product_variety_image.php'; $ProductVarietyImage = new ecommerce_product_variety_image(); $file_list['product_variety'] = $ProductVarietyImage->getFileLink($file); require_once 'models/common/common_taxonomy_label_image.php'; $TaxonomyImage = new common_taxonomy_label_image(); $file_list['taxonomy'] = $TaxonomyImage->getFileLink($file); require_once 'models/ecommerce/ecommerce_recipe_image.php'; $RecipeImage = new ecommerce_recipe_image(); $file_list['recipe'] = $RecipeImage->getFileLink($file); require_once 'models/ecommerce/ecommerce_store_image.php'; $StoreImage = new ecommerce_store_image(); $file_list['store'] = $StoreImage->getFileLink($file); require_once 'models/education/education_survey_image.php'; $SurveyImage = new education_survey_image(); $file_list['survey'] = $SurveyImage->getFileLink($file); $file_list['count'] = count($file_list['file']) + count($file_list['node']) + count($file_list['product']) + count($file_list['product_variety']) + count($file_list['taxonomy']) + count($file_list['recipe']) + count($file_list['store']) + count($file_list['survey']); return $file_list; }
/** * getRecipeListForTaxonomy * * list recipes for given taxonomy_ids * each item contains * - main image details as 'image' field * - page details as 'page' field * * @param array $taxonomy_ids * @param string $sort_by * @param string $sort_direction * @param int $limit_from * @param int $limit_per_page * @param string $image_role * @param bool $conjunction - whether included recipes should have all given $taxonomy_ids (true) or any of given $taxonomy_ids (false) * @param int|string $publish_status - integer to limit by publishing status, string, i.e. 'all' for no restriction by publishing status * @return array */ function getRecipeListForTaxonomy($taxonomy_ids, $sort_by = 'created', $sort_direction = 'DESC', $limit_from = false, $limit_per_page = false, $image_role = 'teaser', $conjunction = true, $publish_status = 1) { /** * input filter */ // sorting if (!in_array($sort_by, array('title', 'created', 'modified', 'priority', 'share_counter'))) { $sort_by = 'created'; } if (!in_array($sort_direction, array('DESC', 'ASC'))) { $sort_direction = 'DESC'; } $order_by = " ORDER BY {$sort_by} {$sort_direction}"; // limit if (!is_numeric($limit_from)) { $limit_from = false; } if (!is_numeric($limit_per_page)) { $limit_per_page = false; } // allow to use limit_per_page without providing limit_from if (is_numeric($limit_per_page) && $limit_from === false) { $limit_from = 0; } if (is_numeric($limit_from) && is_numeric($limit_per_page)) { $limit = " LIMIT {$limit_per_page} OFFSET {$limit_from}"; } else { $limit = ''; } /** * initialise */ require_once 'models/common/common_node.php'; require_once 'models/ecommerce/ecommerce_recipe_taxonomy.php'; require_once 'models/ecommerce/ecommerce_recipe_image.php'; require_once 'models/ecommerce/ecommerce_recipe_review.php'; $Node = new common_node(); $Image = new ecommerce_recipe_image(); $Taxonomy = new ecommerce_recipe_taxonomy(); $Review = new ecommerce_recipe_review(); /** * recipes list */ $recipes = array(); $where = ""; if (is_array($taxonomy_ids) && count($taxonomy_ids) > 0) { $id_list = implode(",", $taxonomy_ids); if ($conjunction) { $count = count($taxonomy_ids); $where = "AND ecommerce_recipe.id IN (\n\t\t\t\t\tSELECT ecommerce_recipe.id\n\t\t\t\t\tFROM ecommerce_recipe\n\t\t\t\t\tINNER JOIN ecommerce_recipe_taxonomy ON ecommerce_recipe_taxonomy.node_id = ecommerce_recipe.id\n\t\t\t\t\tWHERE ecommerce_recipe_taxonomy.taxonomy_tree_id IN ({$id_list})\n\t\t\t\t\tGROUP BY ecommerce_recipe.id\n\t\t\t\t\tHAVING count(DISTINCT ecommerce_recipe_taxonomy.taxonomy_tree_id) = {$count}\n\t\t\t\t)"; } else { $where = "AND ecommerce_recipe.id IN (SELECT node_id FROM ecommerce_recipe_taxonomy WHERE taxonomy_tree_id IN ({$id_list}))"; } } // $publish_status if (is_numeric($publish_status)) { $where_node_publish = " AND common_node.publish = {$publish_status}"; $where_recipe_publish = " AND ecommerce_recipe.publish = {$publish_status}"; } $sql = "SELECT ecommerce_recipe.*, common_node.share_counter\n\t\t\tFROM ecommerce_recipe\n\t\t\tINNER JOIN common_node ON (common_node.node_group = 'page' \n\t\t\t\tAND common_node.node_controller = 'recipe'\n\t\t\t\tAND common_node.content = ecommerce_recipe.id::varchar\n\t\t\t\t{$where_node_publish})\n\t\t\tWHERE 1=1 {$where_recipe_publish} {$where}\n\t\t\t{$order_by}\n\t\t\t{$limit}"; $recipes = $this->executeSql($sql); // return empty array if nothing is found if (!is_array($recipes)) { return array(); } $recipe_pages = $Node->listing("node_group = 'page' AND node_controller = 'recipe' AND content ~ '[0-9]+' AND publish = 1"); foreach ($recipe_pages as $recipe_page) { foreach ($recipes as &$recipe) { if ($recipe_page['content'] == $recipe['id']) { // assign page $recipe['page'] = $recipe_page; // load images $image_list = $Image->listFiles($recipe['id'], $image_role); // if empty list, get any image, without specification of image_role if (is_array($image_list) && count($image_list) == 0) { $image_list = $Image->listFiles($recipe['id']); } // return only one image $recipe['image'] = $image_list[0]; // load review $recipe['review'] = $Review->getRating($recipe['id']); } } } return $recipes; }
/** * getOpenGraphImage */ public function getOpenGraphImage($node_id, $content = false) { if (is_numeric($content)) { $recipe_id = $content; require_once 'models/ecommerce/ecommerce_recipe_image.php'; $Image = new ecommerce_recipe_image(); $image_list = $Image->listFiles($recipe_id); if (is_array($image_list) && count($image_list) > 0) { return $image_list[0]; } } else { // Option to implement og:image associated to common_node record } return false; }