function ciniki_artistprofiles_web_subMenuItems(&$ciniki, $settings, $business_id, $args) { if (!isset($ciniki['business']['modules']['ciniki.artistprofiles'])) { return array('stat' => '404', 'err' => array('pkg' => 'ciniki', 'code' => '3040', 'msg' => "I'm sorry, the file you requested does not exist.")); } // // Return nothing if the page format doesn't have a submenu // if (isset($settings['page-artistprofiles-submenu']) && $settings['page-artistprofiles-submenu'] != 'yes') { return array('stat' => 'ok', 'submenu' => array()); } $submenu = array(); // // Check if Categories is enabled // if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.artistprofiles', 0x100)) { // // Load the settings for categories // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbDetailsQueryDash'); $rc = ciniki_core_dbDetailsQueryDash($ciniki, 'ciniki_artistprofiles_settings', 'business_id', $business_id, 'ciniki.artistprofiles', 'settings', 'tag-category'); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['settings'])) { $psettings = $rc['settings']; } else { $psettings = array(); } if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.artistprofiles', 0x200)) { $submenu['featured'] = array('sequence' => 1, 'title' => 'Featured', 'sequence' => isset($psettings['tag-category-sequence-featured']) && $psettings['tag-category-sequence-featured'] != '' ? $psettings['tag-category-sequence-featured'] : 1, 'title' => isset($psettings['tag-category-title-featured']) && $psettings['tag-category-title-featured'] != '' ? $psettings['tag-category-title-featured'] : 'Featured', 'image_id' => isset($args['content']) && $args['content'] == 'yes' && isset($psettings['tag-category-image-featured']) ? $psettings['tag-category-image-featured'] : '', 'content' => isset($args['content']) && $args['content'] == 'yes' && isset($psettings['tag-category-content-featured']) ? $psettings['tag-category-content-featured'] : '', 'permalink' => 'featured'); } // // Load the list of tags // $strsql = "SELECT DISTINCT tag_name, permalink " . "FROM ciniki_artistprofiles_tags " . "WHERE business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND tag_type = 10 " . ""; $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.artistprofiles', 'category'); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['rows'])) { $categories = $rc['rows']; foreach ($categories as $cat) { $submenu[$cat['permalink']] = array('sequence' => isset($psettings['tag-category-sequence-' . $cat['permalink']]) && $psettings['tag-category-sequence-' . $cat['permalink']] != '' ? $psettings['tag-category-sequence-' . $cat['permalink']] : 10, 'title' => isset($psettings['tag-category-title-' . $cat['permalink']]) && $psettings['tag-category-title-' . $cat['permalink']] != '' ? $psettings['tag-category-title-' . $cat['permalink']] : $cat['tag_name'], 'image_id' => isset($args['content']) && $args['content'] == 'yes' && isset($psettings['tag-category-image-' . $cat['permalink']]) ? $psettings['tag-category-image-' . $cat['permalink']] : '', 'content' => isset($args['content']) && $args['content'] == 'yes' && isset($psettings['tag-category-content-' . $cat['permalink']]) ? $psettings['tag-category-content-' . $cat['permalink']] : '', 'permalink' => $cat['permalink']); } } // // Sort the submenu // uasort($submenu, function ($a, $b) { if ($a['sequence'] == $b['sequence']) { return strcmp($b['title'], $a['title']); } return $a['sequence'] < $b['sequence'] ? -1 : 1; }); } return array('stat' => 'ok', 'submenu' => $submenu); }
function ciniki_artistprofiles_artistList($ciniki) { // // Find all the required and optional arguments // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'prepareArgs'); $rc = ciniki_core_prepareArgs($ciniki, 'no', array('business_id' => array('required' => 'yes', 'blank' => 'no', 'name' => 'Business'), 'category_permalink' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Category'))); if ($rc['stat'] != 'ok') { return $rc; } $args = $rc['args']; // // Check access to business_id as owner, or sys admin. // ciniki_core_loadMethod($ciniki, 'ciniki', 'artistprofiles', 'private', 'checkAccess'); $rc = ciniki_artistprofiles_checkAccess($ciniki, $args['business_id'], 'ciniki.artistprofiles.artistList'); if ($rc['stat'] != 'ok') { return $rc; } // // Get the list of artists // if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.artistprofiles', 0x100) && isset($args['category_permalink']) && $args['category_permalink'] != '') { if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.artistprofiles', 0x200) && $args['category_permalink'] == 'featured') { $strsql = "SELECT ciniki_artistprofiles.id, " . "ciniki_artistprofiles.name, " . "ciniki_artistprofiles.sort_name, " . "ciniki_artistprofiles.permalink, " . "ciniki_artistprofiles.status, " . "ciniki_artistprofiles.flags " . "FROM ciniki_artistprofiles " . "WHERE ciniki_artistprofiles.business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "AND (flags&0x01) = 0x01 " . "ORDER BY sort_name " . ""; } else { $strsql = "SELECT ciniki_artistprofiles.id, " . "ciniki_artistprofiles.name, " . "ciniki_artistprofiles.sort_name, " . "ciniki_artistprofiles.permalink, " . "ciniki_artistprofiles.status, " . "ciniki_artistprofiles.flags " . "FROM ciniki_artistprofiles_tags, ciniki_artistprofiles " . "WHERE ciniki_artistprofiles_tags.business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "AND ciniki_artistprofiles_tags.tag_type = 10 " . "AND ciniki_artistprofiles_tags.permalink = '" . ciniki_core_dbQuote($ciniki, $args['category_permalink']) . "' " . "AND ciniki_artistprofiles_tags.artist_id = ciniki_artistprofiles.id " . "AND ciniki_artistprofiles.business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "ORDER BY sort_name " . ""; } } else { $strsql = "SELECT ciniki_artistprofiles.id, " . "ciniki_artistprofiles.name, " . "ciniki_artistprofiles.sort_name, " . "ciniki_artistprofiles.permalink, " . "ciniki_artistprofiles.status, " . "ciniki_artistprofiles.flags " . "FROM ciniki_artistprofiles " . "WHERE ciniki_artistprofiles.business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "ORDER BY sort_name " . ""; } ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbHashQueryArrayTree'); $rc = ciniki_core_dbHashQueryArrayTree($ciniki, $strsql, 'ciniki.artistprofiles', array(array('container' => 'artists', 'fname' => 'id', 'fields' => array('id', 'name', 'sort_name', 'permalink', 'status', 'flags')))); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['artists'])) { $artists = $rc['artists']; } else { $artists = array(); } $rsp = array('stat' => 'ok', 'artists' => $artists); // // Return list of categories // if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.artistprofiles', 0x100)) { ciniki_core_loadMethod($ciniki, 'ciniki', 'artistprofiles', 'web', 'subMenuItems'); $rc = ciniki_artistprofiles_web_subMenuItems($ciniki, array(), $args['business_id'], array()); if ($rc['stat'] != 'ok') { return $rc; } $rsp['categories'] = $rc['submenu']; } return $rsp; }
function ciniki_merchandise_productSearch($ciniki) { // // Find all the required and optional arguments // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'prepareArgs'); $rc = ciniki_core_prepareArgs($ciniki, 'no', array('business_id' => array('required' => 'yes', 'blank' => 'no', 'name' => 'Business'), 'start_needle' => array('required' => 'yes', 'blank' => 'no', 'name' => 'Search String'), 'limit' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Limit'))); if ($rc['stat'] != 'ok') { return $rc; } $args = $rc['args']; // // Check access to business_id as owner, or sys admin. // ciniki_core_loadMethod($ciniki, 'ciniki', 'merchandise', 'private', 'checkAccess'); $rc = ciniki_merchandise_checkAccess($ciniki, $args['business_id'], 'ciniki.merchandise.productList'); if ($rc['stat'] != 'ok') { return $rc; } // // Get the list of products // $strsql = "SELECT ciniki_merchandise.id, " . "ciniki_merchandise.code, " . "ciniki_merchandise.name, " . "ciniki_merchandise.permalink, " . "ciniki_merchandise.status, " . "ciniki_merchandise.sequence, " . "ciniki_merchandise.flags, " . "ciniki_merchandise.unit_amount, " . "ciniki_merchandise.unit_discount_amount, " . "ciniki_merchandise.unit_discount_percentage, " . "ciniki_merchandise.taxtype_id, " . "ciniki_merchandise.inventory, " . "ciniki_merchandise.shipping_other, " . "ciniki_merchandise.shipping_CA, " . "ciniki_merchandise.shipping_US, " . "ciniki_merchandise.primary_image_id, " . "ciniki_merchandise.synopsis, " . "ciniki_merchandise.description " . "FROM ciniki_merchandise " . "WHERE ciniki_merchandise.business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . ""; if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x1)) { $strsql .= "AND (code LIKE '" . ciniki_core_dbQuote($ciniki, $args['start_needle']) . "%' " . "OR code LIKE '% " . ciniki_core_dbQuote($ciniki, $args['start_needle']) . "%' " . "OR name LIKE '" . ciniki_core_dbQuote($ciniki, $args['start_needle']) . "%' " . "OR name LIKE '% " . ciniki_core_dbQuote($ciniki, $args['start_needle']) . "%' " . ") "; } else { $strsql .= "AND (name LIKE '" . ciniki_core_dbQuote($ciniki, $args['start_needle']) . "%' " . "OR name LIKE '% " . ciniki_core_dbQuote($ciniki, $args['start_needle']) . "%' " . ") "; } if (isset($args['limit']) && is_numeric($args['limit']) && $args['limit'] > 0) { $strsql .= "LIMIT " . ciniki_core_dbQuote($ciniki, $args['limit']) . " "; } else { $strsql .= "LIMIT 25 "; } ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbHashQueryArrayTree'); $rc = ciniki_core_dbHashQueryArrayTree($ciniki, $strsql, 'ciniki.merchandise', array(array('container' => 'products', 'fname' => 'id', 'fields' => array('id', 'code', 'name', 'permalink', 'status', 'sequence', 'flags', 'unit_amount', 'unit_discount_amount', 'unit_discount_percentage', 'taxtype_id', 'inventory', 'shipping_other', 'shipping_CA', 'shipping_US', 'primary_image_id', 'synopsis', 'description')))); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['products'])) { $products = $rc['products']; foreach ($products as $pid => $product) { if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x1) && $product['code'] != '') { $products[$pid]['display_name'] = $product['code'] . ' - ' . $product['name']; } else { $products[$pid]['display_name'] = $product['name']; } } } else { $products = array(); } return array('stat' => 'ok', 'products' => $products); }
function ciniki_merchandise_web_productList($ciniki, $settings, $business_id, $args) { // // Load INTL settings // ciniki_core_loadMethod($ciniki, 'ciniki', 'businesses', 'private', 'intlSettings'); $rc = ciniki_businesses_intlSettings($ciniki, $business_id); if ($rc['stat'] != 'ok') { return $rc; } $intl_timezone = $rc['settings']['intl-default-timezone']; $intl_currency_fmt = numfmt_create($rc['settings']['intl-default-locale'], NumberFormatter::CURRENCY); $intl_currency = $rc['settings']['intl-default-currency']; // // Load the list of products for an object // if (isset($args['object']) && $args['object'] != '' && isset($args['object_id']) && $args['object_id'] != '') { $strsql = "SELECT ciniki_merchandise_objrefs.id AS ref_id, " . "ciniki_merchandise.id, " . "ciniki_merchandise.code, " . "ciniki_merchandise.name, " . "ciniki_merchandise.permalink, " . "ciniki_merchandise.inventory, " . "ciniki_merchandise.unit_amount, " . "ciniki_merchandise.primary_image_id, " . "ciniki_merchandise.synopsis, "; if (isset($settings['page-merchandise-active']) && $settings['page-merchandise-active'] == 'yes') { $strsql .= "'yes' AS is_details "; } else { $strsql .= "'no' AS is_details "; } $strsql .= "FROM ciniki_merchandise_objrefs " . "LEFT JOIN ciniki_merchandise ON (" . "ciniki_merchandise_objrefs.product_id = ciniki_merchandise.id " . "AND ciniki_merchandise.status = 10 " . "AND (ciniki_merchandise.flags&0x01) = 0x01 " . "AND ciniki_merchandise.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . ") " . "WHERE ciniki_merchandise_objrefs.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND ciniki_merchandise_objrefs.object = '" . ciniki_core_dbQuote($ciniki, $args['object']) . "' " . "AND ciniki_merchandise_objrefs.object_id = '" . ciniki_core_dbQuote($ciniki, $args['object_id']) . "' " . "ORDER BY ciniki_merchandise_objrefs.sequence, ciniki_merchandise.name " . ""; ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbHashQueryArrayTree'); $rc = ciniki_core_dbHashQueryArrayTree($ciniki, $strsql, 'ciniki.merchandise', array(array('container' => 'products', 'fname' => 'id', 'fields' => array('id', 'code', 'name', 'permalink', 'image_id' => 'primary_image_id', 'synopsis', 'is_details')))); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['products'])) { foreach ($rc['products'] as $pid => $product) { $rc['products'][$pid]['localurl'] = '/merchandise/' . $product['permalink']; if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x1)) { $rc['products'][$pid]['title'] = ($product['code'] != '' ? $product['code'] . ' - ' : '') . $product['name']; } else { $rc['products'][$pid]['title'] = $product['name']; } // $rc['products'][$pid]['unit_amount_display'] = numfmt_format_currency($intl_currency_fmt, $product['unit_amount'], $intl_currency); } return array('stat' => 'ok', 'products' => $rc['products']); } else { return array('stat' => 'ok', 'products' => array()); } } return array('stat' => 'ok', 'products' => array()); }
function ciniki_artistprofiles_hooks_uiSettings($ciniki, $business_id, $args) { // // Setup the default response // $rsp = array('stat' => 'ok', 'menu_items' => array(), 'settings_menu_items' => array()); // // Check permissions for what menu items should be available // if (isset($ciniki['business']['modules']['ciniki.artistprofiles']) && (isset($args['permissions']['owners']) || isset($args['permissions']['employees']) || isset($args['permissions']['resellers']) || ($ciniki['session']['user']['perms'] & 0x1) == 0x1)) { $menu_item = array('priority' => 3700, 'label' => 'Artist Profiles', 'edit' => array('app' => 'ciniki.artistprofiles.main')); $rsp['menu_items'][] = $menu_item; } // // Check if Dropbox has been enabled // if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.artistprofiles', 0x1) && (isset($args['permissions']['owners']) || isset($args['permissions']['resellers']) || ($ciniki['session']['user']['perms'] & 0x1) == 0x1)) { $rsp['settings_menu_items'][] = array('priority' => 3700, 'label' => 'Artist Profiles', 'edit' => array('app' => 'ciniki.artistprofiles.settings')); } return $rsp; }
function ciniki_merchandise_hooks_productList($ciniki, $business_id, $args) { // // Load INTL settings // ciniki_core_loadMethod($ciniki, 'ciniki', 'businesses', 'private', 'intlSettings'); $rc = ciniki_businesses_intlSettings($ciniki, $business_id); if ($rc['stat'] != 'ok') { return $rc; } $intl_timezone = $rc['settings']['intl-default-timezone']; $intl_currency_fmt = numfmt_create($rc['settings']['intl-default-locale'], NumberFormatter::CURRENCY); $intl_currency = $rc['settings']['intl-default-currency']; // // Load the list of products for an object // if (isset($args['object']) && $args['object'] != '' && isset($args['object_id']) && $args['object_id'] != '') { $strsql = "SELECT ciniki_merchandise_objrefs.id AS ref_id, " . "ciniki_merchandise.id, " . "ciniki_merchandise.code, " . "ciniki_merchandise.name, " . "ciniki_merchandise.inventory, " . "ciniki_merchandise.unit_amount " . "FROM ciniki_merchandise_objrefs " . "LEFT JOIN ciniki_merchandise ON (" . "ciniki_merchandise_objrefs.product_id = ciniki_merchandise.id " . "AND ciniki_merchandise.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . ") " . "WHERE ciniki_merchandise_objrefs.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND ciniki_merchandise_objrefs.object = '" . ciniki_core_dbQuote($ciniki, $args['object']) . "' " . "AND ciniki_merchandise_objrefs.object_id = '" . ciniki_core_dbQuote($ciniki, $args['object_id']) . "' " . "ORDER BY ciniki_merchandise_objrefs.sequence, ciniki_merchandise.name " . ""; ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbHashQueryArrayTree'); $rc = ciniki_core_dbHashQueryArrayTree($ciniki, $strsql, 'ciniki.merchandise', array(array('container' => 'products', 'fname' => 'id', 'fields' => array('ref_id', 'product_id' => 'id', 'code', 'name', 'inventory', 'unit_amount')))); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['products'])) { foreach ($rc['products'] as $pid => $product) { if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x1) && $product['code'] != '') { $rc['products'][$pid]['display_name'] = $product['code'] . ' - ' . $product['name']; } else { $rc['products'][$pid]['display_name'] = $product['name']; } $rc['products'][$pid]['unit_amount_display'] = numfmt_format_currency($intl_currency_fmt, $product['unit_amount'], $intl_currency); } return array('stat' => 'ok', 'products' => $rc['products']); } else { return array('stat' => 'ok', 'products' => array()); } } return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.1', 'msg' => 'Unable to get the product list')); }
function ciniki_merchandise_web_processRequest(&$ciniki, $settings, $business_id, $args) { if (!isset($ciniki['business']['modules']['ciniki.merchandise'])) { return array('stat' => '404', 'err' => array('code' => 'ciniki.merchandise.23', 'msg' => "I'm sorry, the page you requested does not exist.")); } $page = array('title' => $args['page_title'], 'breadcrumbs' => $args['breadcrumbs'], 'blocks' => array()); // // Setup titles // if (count($page['breadcrumbs']) == 0) { if (isset($settings['page-merchandise-name']) && $settings['page-merchandise-name'] != '') { $page['breadcrumbs'][] = array('name' => $settings['page-merchandise-name'], 'url' => $args['base_url']); } else { $page['breadcrumbs'][] = array('name' => 'Shop', 'url' => $args['base_url']); } } $display = ''; $ciniki['response']['head']['og']['url'] = $args['domain_base_url']; // // Parse the url to determine what was requested // $categories = array(); if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x4)) { $strsql = "SELECT ciniki_merchandise.primary_image_id AS image_id, " . "ciniki_merchandise_tags.permalink, " . "ciniki_merchandise_tags.tag_name AS title " . "FROM ciniki_merchandise, ciniki_merchandise_tags " . "WHERE ciniki_merchandise.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND (ciniki_merchandise.flags&0x01) = 0x01 " . "AND ciniki_merchandise.id = ciniki_merchandise_tags.product_id " . "AND ciniki_merchandise_tags.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND ciniki_merchandise_tags.tag_type = 10 " . "ORDER BY ciniki_merchandise_tags.permalink, ciniki_merchandise_tags.tag_name, ciniki_merchandise.primary_image_id DESC " . ""; ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbHashQueryIDTree'); $rc = ciniki_core_dbHashQueryIDTree($ciniki, $strsql, 'ciniki.merchandise', array(array('container' => 'categories', 'fname' => 'permalink', 'fields' => array('permalink', 'title', 'image_id')))); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['categories']) && count($rc['categories']) > 0) { $categories = $rc['categories']; } } // // Setup the base url as the base url for this page. This may be altered below // as the uri_split is processed, but we do not want to alter the original passed in. // $base_url = $args['base_url']; // // Check if we are to display an image, from the gallery, or latest images // $display = ''; $uri_split = $args['uri_split']; // // First check if there is a category and remove from uri_split // if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x4) && isset($categories) && isset($uri_split[0]) && isset($categories[$uri_split[0]])) { $category = $categories[$uri_split[0]]; $page['title'] = $category['title']; $page['breadcrumbs'][] = array('name' => $category['title'], 'url' => $base_url . '/' . $category['permalink']); $base_url .= '/' . $category['permalink']; array_shift($uri_split); } // // Check for an product // if (isset($uri_split[0]) && $uri_split[0] != '') { $product_permalink = $uri_split[0]; $display = 'product'; // // Check for gallery pic request // if (isset($uri_split[1]) && $uri_split[1] == 'gallery' && isset($uri_split[2]) && $uri_split[2] != '') { $image_permalink = $uri_split[2]; $display = 'productpic'; } $ciniki['response']['head']['og']['url'] .= '/' . $product_permalink; $base_url .= '/' . $product_permalink; } elseif (isset($category)) { $display = 'categorylist'; } elseif (isset($categories) && count($categories) > 0) { $display = 'categories'; } else { $display = 'list'; } if ($display == 'list') { // // Display list as thumbnails // $strsql = "SELECT id, code, name, permalink, primary_image_id AS image_id, synopsis, 'yes' AS is_details " . "FROM ciniki_merchandise " . "WHERE business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND (flags&0x01) = 0x01 " . "ORDER BY name "; $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.merchandise', 'product'); if ($rc['stat'] != 'ok') { return $rc; } if (!isset($rc['rows']) || count($rc['rows']) == 0) { $page['blocks'][] = array('type' => 'content', 'content' => "There are currently no products available. Please check back soon."); } else { $page['blocks'][] = array('type' => 'imagelist', 'base_url' => $base_url, 'list' => $rc['rows']); } } elseif ($display == 'categorylist') { // // Display list as thumbnails // $strsql = "SELECT ciniki_merchandise.id, " . "ciniki_merchandise.name, " . "ciniki_merchandise.permalink, " . "ciniki_merchandise.primary_image_id AS image_id, " . "ciniki_merchandise.synopsis, " . "'yes' AS is_details " . "FROM ciniki_merchandise_tags, ciniki_merchandise " . "WHERE ciniki_merchandise_tags.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND ciniki_merchandise_tags.tag_type = 10 " . "AND ciniki_merchandise_tags.permalink = '" . ciniki_core_dbQuote($ciniki, $category['permalink']) . "' " . "AND ciniki_merchandise_tags.product_id = ciniki_merchandise.id " . "AND ciniki_merchandise.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND (ciniki_merchandise.flags&0x01) = 0x01 " . "ORDER BY ciniki_merchandise.code, ciniki_merchandise.name " . ""; $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.merchandise', 'product'); if ($rc['stat'] != 'ok') { return $rc; } if (!isset($rc['rows']) || count($rc['rows']) == 0) { $page['blocks'][] = array('type' => 'content', 'content' => "There are currently no products available. Please check back soon."); } elseif (count($rc['rows']) == 1) { $display = 'product'; $product_permalink = $rc['rows'][0]['permalink']; $base_url .= '/' . $product_permalink; } else { $page['blocks'][] = array('type' => 'imagelist', 'base_url' => $base_url, 'noimage' => 'yes', 'list' => $rc['rows']); } } elseif ($display == 'categories') { $page['blocks'][] = array('type' => 'tagimages', 'base_url' => $base_url, 'tags' => $categories); } if ($display == 'product' || $display == 'productpic') { if (isset($category)) { $ciniki['response']['head']['links'][] = array('rel' => 'canonical', 'href' => $args['base_url'] . '/' . $product_permalink); } ciniki_core_loadMethod($ciniki, 'ciniki', 'merchandise', 'web', 'productLoad'); $rc = ciniki_merchandise_web_productLoad($ciniki, $business_id, array('permalink' => $product_permalink, 'images' => 'yes')); if ($rc['stat'] != 'ok') { return array('stat' => '404', 'err' => array('code' => 'ciniki.merchandise.24', 'msg' => "We're sorry, the page you requested is not available.")); } if (!isset($rc['product'])) { return array('stat' => '404', 'err' => array('code' => 'ciniki.merchandise.25', 'msg' => "We're sorry, the page you requested is not available.")); } else { $product = $rc['product']; $page['title'] = $product['name']; $page['breadcrumbs'][] = array('name' => $product['name'], 'url' => $base_url . '/' . $product['permalink']); if ($display == 'productpic') { if (!isset($product['images']) || count($product['images']) < 1) { $page['blocks'][] = array('type' => 'message', 'content' => "I'm sorry, but we can't seem to find the image you requested."); } else { ciniki_core_loadMethod($ciniki, 'ciniki', 'web', 'private', 'galleryFindNextPrev'); $rc = ciniki_web_galleryFindNextPrev($ciniki, $product['images'], $image_permalink); if ($rc['stat'] != 'ok') { return $rc; } if ($rc['img'] == NULL) { $page['blocks'][] = array('type' => 'message', 'content' => "I'm sorry, but we can't seem to find the image you requested."); } else { $page['breadcrumbs'][] = array('name' => $rc['img']['title'], 'url' => $base_url . '/gallery/' . $image_permalink); if ($rc['img']['title'] != '') { $page['title'] .= ' - ' . $rc['img']['title']; } $block = array('type' => 'galleryimage', 'primary' => 'yes', 'image' => $rc['img']); if ($rc['prev'] != null) { $block['prev'] = array('url' => $base_url . '/gallery/' . $rc['prev']['permalink'], 'image_id' => $rc['prev']['image_id']); } if ($rc['next'] != null) { $block['next'] = array('url' => $base_url . '/gallery/' . $rc['next']['permalink'], 'image_id' => $rc['next']['image_id']); } $page['blocks'][] = $block; } } } else { if (isset($product['primary_image_id']) && $product['primary_image_id'] > 0) { $page['blocks'][] = array('type' => 'image', 'section' => 'primary-image', 'primary' => 'yes', 'image_id' => $product['primary_image_id'], 'title' => $product['name'], 'caption' => $product['primary_image_caption'], 'base_url' => $base_url . '/gallery', 'permalink' => $product['uuid']); } if (isset($product['description']) && $product['description'] != '') { $page['blocks'][] = array('type' => 'content', 'section' => 'content', 'title' => '', 'content' => $product['description']); } elseif (isset($product['synopsis']) && $product['synopsis'] != '') { $page['blocks'][] = array('type' => 'content', 'section' => 'content', 'title' => '', 'content' => $product['synopsis']); } // Add share buttons if (!isset($settings['page-merchandise-share-buttons']) || $settings['page-merchandise-share-buttons'] == 'yes') { $page['blocks'][] = array('type' => 'sharebuttons', 'section' => 'share', 'pagetitle' => $product['name'], 'tags' => array()); } // Add gallery if (isset($product['images']) && ($product['primary_image_id'] > 0 && count($product['images']) > 1 || $product['primary_image_id'] == 0 && count($product['images']) > 0)) { $page['blocks'][] = array('type' => 'gallery', 'title' => 'Additional Images', 'base_url' => $base_url . '/gallery', 'images' => $product['images']); } } } } // // Return error if nothing found to display // if ($display == '') { return array('stat' => '404', 'err' => array('code' => 'ciniki.merchandise.26', 'msg' => "We're sorry, the page you requested is not available.")); } return array('stat' => 'ok', 'page' => $page); }
function ciniki_merchandise_productGet($ciniki) { // // Find all the required and optional arguments // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'prepareArgs'); $rc = ciniki_core_prepareArgs($ciniki, 'no', array('business_id' => array('required' => 'yes', 'blank' => 'no', 'name' => 'Business'), 'product_id' => array('required' => 'yes', 'blank' => 'no', 'name' => 'Merchandise Product'), 'images' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Images'))); if ($rc['stat'] != 'ok') { return $rc; } $args = $rc['args']; // // Make sure this module is activated, and // check permission to run this function for this business // ciniki_core_loadMethod($ciniki, 'ciniki', 'merchandise', 'private', 'checkAccess'); $rc = ciniki_merchandise_checkAccess($ciniki, $args['business_id'], 'ciniki.merchandise.productGet'); if ($rc['stat'] != 'ok') { return $rc; } // // Load business settings // ciniki_core_loadMethod($ciniki, 'ciniki', 'businesses', 'private', 'intlSettings'); $rc = ciniki_businesses_intlSettings($ciniki, $args['business_id']); if ($rc['stat'] != 'ok') { return $rc; } $intl_timezone = $rc['settings']['intl-default-timezone']; $intl_currency_fmt = numfmt_create($rc['settings']['intl-default-locale'], NumberFormatter::CURRENCY); $intl_currency = $rc['settings']['intl-default-currency']; ciniki_core_loadMethod($ciniki, 'ciniki', 'users', 'private', 'datetimeFormat'); $datetime_format = ciniki_users_datetimeFormat($ciniki, 'php'); // // Return default for new Merchandise Product // if ($args['product_id'] == 0) { $product = array('id' => 0, 'code' => '', 'name' => '', 'permalink' => '', 'status' => '10', 'sequence' => '1', 'flags' => '0', 'unit_amount' => '', 'unit_discount_amount' => '', 'unit_discount_percentage' => '', 'taxtype_id' => '0', 'inventory' => '', 'shipping_other' => '', 'shipping_CA' => '', 'shipping_US' => '', 'primary_image_id' => '0', 'synopsis' => '', 'description' => '', 'images' => array()); } else { $strsql = "SELECT ciniki_merchandise.id, " . "ciniki_merchandise.code, " . "ciniki_merchandise.name, " . "ciniki_merchandise.permalink, " . "ciniki_merchandise.status, " . "ciniki_merchandise.sequence, " . "ciniki_merchandise.flags, " . "ciniki_merchandise.unit_amount, " . "ciniki_merchandise.unit_discount_amount, " . "ciniki_merchandise.unit_discount_percentage, " . "ciniki_merchandise.taxtype_id, " . "ciniki_merchandise.inventory, " . "ciniki_merchandise.shipping_other, " . "ciniki_merchandise.shipping_CA, " . "ciniki_merchandise.shipping_US, " . "ciniki_merchandise.primary_image_id, " . "ciniki_merchandise.synopsis, " . "ciniki_merchandise.description " . "FROM ciniki_merchandise " . "WHERE ciniki_merchandise.business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "AND ciniki_merchandise.id = '" . ciniki_core_dbQuote($ciniki, $args['product_id']) . "' " . ""; ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbHashQuery'); $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.merchandise', 'product'); if ($rc['stat'] != 'ok') { return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.17', 'msg' => 'Merchandise Product not found', 'err' => $rc['err'])); } if (!isset($rc['product'])) { return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.18', 'msg' => 'Unable to find Merchandise Product')); } $product = $rc['product']; $product['unit_amount'] = $product['unit_amount'] == 0 ? '' : numfmt_format_currency($intl_currency_fmt, $product['unit_amount'], $intl_currency); $product['unit_discount_amount'] = $product['unit_discount_amount'] == 0 ? '' : numfmt_format_currency($intl_currency_fmt, $product['unit_discount_amount'], $intl_currency); $product['shipping_other'] = $product['shipping_other'] == 0 ? '' : numfmt_format_currency($intl_currency_fmt, $product['shipping_other'], $intl_currency); $product['shipping_CA'] = $product['shipping_CA'] == 0 ? '' : numfmt_format_currency($intl_currency_fmt, $product['shipping_CA'], $intl_currency); $product['shipping_US'] = $product['shipping_US'] == 0 ? '' : numfmt_format_currency($intl_currency_fmt, $product['shipping_US'], $intl_currency); // // Get any tags for this product // if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x4)) { $product['categories'] = array(); $strsql = "SELECT tag_type, tag_name AS lists " . "FROM ciniki_merchandise_tags " . "WHERE product_id = '" . ciniki_core_dbQuote($ciniki, $args['product_id']) . "' " . "AND business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "ORDER BY tag_type, tag_name " . ""; ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbHashQueryTree'); $rc = ciniki_core_dbHashQueryTree($ciniki, $strsql, 'ciniki.merchandise', array(array('container' => 'tags', 'fname' => 'tag_type', 'name' => 'tags', 'fields' => array('tag_type', 'lists'), 'dlists' => array('lists' => '::')))); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['tags'])) { foreach ($rc['tags'] as $tags) { if ($tags['tags']['tag_type'] == 10) { $product['categories'] = $tags['tags']['lists']; } } } } // // Get the list of object references for this product // $strsql = "SELECT id, object, object_id, 'Unknown' as display_name " . "FROM ciniki_merchandise_objrefs " . "WHERE product_id = '" . ciniki_core_dbQuote($ciniki, $args['product_id']) . "' " . ""; ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbHashQueryArrayTree'); $rc = ciniki_core_dbHashQueryArrayTree($ciniki, $strsql, 'ciniki.merchandise', array(array('container' => 'objrefs', 'fname' => 'id', 'fields' => array('id', 'object', 'object_id', 'display_name')))); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['objrefs'])) { $product['objrefs'] = $rc['objrefs']; foreach ($product['objrefs'] as $rid => $ref) { list($pkg, $mod, $obj) = explode('.', $ref['object']); $rc = ciniki_core_loadMethod($ciniki, $pkg, $mod, 'hooks', 'getObjectName'); if ($rc['stat'] == 'ok') { $fn = $rc['function_call']; $rc = $fn($ciniki, $args['business_id'], array('object' => $ref['object'], 'object_id' => $ref['object_id'])); if ($rc['stat'] == 'ok' && isset($rc['name'])) { $product['objrefs'][$rid]['display_name'] = $rc['name']; } } } } else { $product['objrefs'] = array(); } // // Get the additional images for this product // if (isset($args['images']) && $args['images'] == 'yes') { ciniki_core_loadMethod($ciniki, 'ciniki', 'images', 'hooks', 'loadThumbnail'); $strsql = "SELECT ciniki_merchandise_images.id, " . "ciniki_merchandise_images.image_id, " . "ciniki_merchandise_images.name, " . "ciniki_merchandise_images.sequence, " . "ciniki_merchandise_images.description " . "FROM ciniki_merchandise_images " . "WHERE ciniki_merchandise_images.product_id = '" . ciniki_core_dbQuote($ciniki, $args['product_id']) . "' " . "AND ciniki_merchandise_images.business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "ORDER BY ciniki_merchandise_images.sequence, ciniki_merchandise_images.date_added, ciniki_merchandise_images.name " . ""; $rc = ciniki_core_dbHashQueryArrayTree($ciniki, $strsql, 'ciniki.artcatalog', array(array('container' => 'images', 'fname' => 'id', 'fields' => array('id', 'image_id', 'name', 'sequence', 'description')))); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['images'])) { $product['images'] = $rc['images']; foreach ($product['images'] as $inum => $img) { if (isset($img['image_id']) && $img['image_id'] > 0) { $rc = ciniki_images_hooks_loadThumbnail($ciniki, $args['business_id'], array('image_id' => $img['image_id'], 'maxlength' => 75)); if ($rc['stat'] != 'ok') { return $rc; } $product['images'][$inum]['image_data'] = 'data:image/jpg;base64,' . base64_encode($rc['image']); } } } } } $rsp = array('stat' => 'ok', 'product' => $product); // // Check if all tags should be returned // $rsp['categories'] = array(); if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x4)) { // // Get the available tags // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbQueryList'); $strsql = "SELECT DISTINCT tag_name FROM ciniki_merchandise_tags WHERE tag_type = 10 AND business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' "; $rc = ciniki_core_dbQueryList($ciniki, $strsql, 'ciniki.merchandise', 'categories', 'tag_name'); if ($rc['stat'] != 'ok') { return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.19', 'msg' => 'Unable to get list of categories', 'err' => $rc['err'])); } if (isset($rc['categories'])) { $rsp['categories'] = $rc['categories']; } } return $rsp; }
function ciniki_merchandise_productAdd(&$ciniki) { // // Find all the required and optional arguments // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'prepareArgs'); $rc = ciniki_core_prepareArgs($ciniki, 'no', array('business_id' => array('required' => 'yes', 'blank' => 'no', 'name' => 'Business'), 'code' => array('required' => 'no', 'blank' => 'yes', 'trimblanks' => 'yes', 'name' => 'Product Code'), 'name' => array('required' => 'yes', 'blank' => 'no', 'trimblanks' => 'yes', 'name' => 'Product Name'), 'permalink' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Permalink'), 'status' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Status'), 'sequence' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Sequence'), 'flags' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Options'), 'unit_amount' => array('required' => 'no', 'blank' => 'yes', 'type' => 'currency', 'name' => 'Price'), 'unit_discount_amount' => array('required' => 'no', 'blank' => 'yes', 'type' => 'currency', 'name' => 'Discount Amount'), 'unit_discount_percentage' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Discount Percentage'), 'taxtype_id' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Tax Type'), 'inventory' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Inventory'), 'shipping_other' => array('required' => 'no', 'blank' => 'yes', 'type' => 'currency', 'name' => 'Shipping Cost Other'), 'shipping_CA' => array('required' => 'no', 'blank' => 'yes', 'type' => 'currency', 'name' => 'Shipping Canada'), 'shipping_US' => array('required' => 'no', 'blank' => 'yes', 'type' => 'currency', 'name' => 'Shipping USA'), 'primary_image_id' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Image'), 'synopsis' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Synopsis'), 'description' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Description'), 'object' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Object'), 'object_id' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Object ID'), 'image_id' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Additional Image'), 'categories' => array('required' => 'no', 'blank' => 'yes', 'type' => 'list', 'delimiter' => '::', 'name' => 'Categories'))); if ($rc['stat'] != 'ok') { return $rc; } $args = $rc['args']; // // Check access to business_id as owner // ciniki_core_loadMethod($ciniki, 'ciniki', 'merchandise', 'private', 'checkAccess'); $rc = ciniki_merchandise_checkAccess($ciniki, $args['business_id'], 'ciniki.merchandise.productAdd'); if ($rc['stat'] != 'ok') { return $rc; } // // Make sure code is unique // if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x1)) { if (!isset($args['code']) || $args['code'] == '') { return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.10', 'msg' => 'You must specify a code.')); } $strsql = "SELECT id, code, permalink " . "FROM ciniki_merchandise " . "WHERE business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "AND code = '" . ciniki_core_dbQuote($ciniki, $args['code']) . "' " . ""; $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.merchandise', 'item'); if ($rc['stat'] != 'ok') { return $rc; } if ($rc['num_rows'] > 0) { return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.11', 'msg' => 'You already have a product with that code, please choose another.')); } } // // Setup permalink // if (!isset($args['permalink']) || $args['permalink'] == '') { if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x1)) { ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'makePermalink'); $args['permalink'] = ciniki_core_makePermalink($ciniki, $args['code'] . '-' . $args['name']); } else { ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'makePermalink'); $args['permalink'] = ciniki_core_makePermalink($ciniki, $args['name']); } } // // Make sure the permalink is unique // $strsql = "SELECT id, name, permalink " . "FROM ciniki_merchandise " . "WHERE business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "AND permalink = '" . ciniki_core_dbQuote($ciniki, $args['permalink']) . "' " . ""; $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.merchandise', 'item'); if ($rc['stat'] != 'ok') { return $rc; } if ($rc['num_rows'] > 0) { return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.12', 'msg' => 'You already have a merchandise product with that name, please choose another.')); } // // Start transaction // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbTransactionStart'); ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbTransactionRollback'); ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbTransactionCommit'); ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbAddModuleHistory'); $rc = ciniki_core_dbTransactionStart($ciniki, 'ciniki.merchandise'); if ($rc['stat'] != 'ok') { return $rc; } // // Add the merchandise product to the database // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'objectAdd'); $rc = ciniki_core_objectAdd($ciniki, $args['business_id'], 'ciniki.merchandise.product', $args, 0x4); if ($rc['stat'] != 'ok') { ciniki_core_dbTransactionRollback($ciniki, 'ciniki.merchandise'); return $rc; } $product_id = $rc['id']; // // Update the categories // if (isset($args['categories'])) { ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'tagsUpdate'); $rc = ciniki_core_tagsUpdate($ciniki, 'ciniki.merchandise', 'tag', $args['business_id'], 'ciniki_merchandise_tags', 'ciniki_merchandise_history', 'product_id', $product_id, 10, $args['categories']); if ($rc['stat'] != 'ok') { ciniki_core_dbTransactionRollback($ciniki, 'ciniki.merchandise'); return $rc; } } // // Add additional image if supplied // if (isset($args['image_id']) && $args['image_id'] > 0) { // // Get a UUID for use in permalink // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbUUID'); $rc = ciniki_core_dbUUID($ciniki, 'ciniki.merchandise'); if ($rc['stat'] != 'ok') { return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.13', 'msg' => 'Unable to get a new UUID', 'err' => $rc['err'])); } $args['uuid'] = $rc['uuid']; // // Setup permalink // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'makePermalink'); $args['permalink'] = ciniki_core_makePermalink($ciniki, $args['uuid']); $args['name'] = ''; // // Add the product image to the database // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'objectAdd'); $rc = ciniki_core_objectAdd($ciniki, $args['business_id'], 'ciniki.merchandise.productimage', $args, 0x4); if ($rc['stat'] != 'ok') { ciniki_core_dbTransactionRollback($ciniki, 'ciniki.merchandise'); return $rc; } $productimage_id = $rc['id']; } // // If the object is specified // if (isset($args['object']) && $args['object'] != '' && isset($args['object_id']) && $args['object_id'] != '') { $rc = ciniki_core_objectAdd($ciniki, $args['business_id'], 'ciniki.merchandise.objref', array('product_id' => $product_id, 'object' => $args['object'], 'object_id' => $args['object_id'], 'sequence' => 1), 0x4); if ($rc['stat'] != 'ok') { ciniki_core_dbTransactionRollback($ciniki, 'ciniki.merchandise'); return $rc; } } // // Commit the transaction // $rc = ciniki_core_dbTransactionCommit($ciniki, 'ciniki.merchandise'); if ($rc['stat'] != 'ok') { return $rc; } // // Update the last_change date in the business modules // Ignore the result, as we don't want to stop user updates if this fails. // ciniki_core_loadMethod($ciniki, 'ciniki', 'businesses', 'private', 'updateModuleChangeDate'); ciniki_businesses_updateModuleChangeDate($ciniki, $args['business_id'], 'ciniki', 'merchandise'); // // Update the web index if enabled // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'hookExec'); ciniki_core_hookExec($ciniki, $args['business_id'], 'ciniki', 'web', 'indexObject', array('object' => 'ciniki.merchandise.product', 'object_id' => $product_id)); return array('stat' => 'ok', 'id' => $product_id); }
function ciniki_artistprofiles_web_processRequest(&$ciniki, $settings, $business_id, $args) { if (!isset($ciniki['business']['modules']['ciniki.artistprofiles'])) { return array('stat' => '404', 'err' => array('pkg' => 'ciniki', 'code' => '3041', 'msg' => "I'm sorry, the page you requested does not exist.")); } $page = array('title' => $args['page_title'], 'breadcrumbs' => $args['breadcrumbs'], 'blocks' => array()); // // Get the list of categories // if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.artistprofiles', 0x100)) { ciniki_core_loadMethod($ciniki, 'ciniki', 'artistprofiles', 'web', 'subMenuItems'); $rc = ciniki_artistprofiles_web_subMenuItems($ciniki, $settings, $business_id, array('content' => 'yes')); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['submenu'])) { $categories = $rc['submenu']; } } // // Setup titles // if (count($page['breadcrumbs']) == 0) { $page['breadcrumbs'][] = array('name' => 'Artists', 'url' => $args['base_url']); } $display = ''; $ciniki['response']['head']['og']['url'] = $args['domain_base_url']; // // Parse the url to determine what was requested // // // Setup the base url as the base url for this page. This may be altered below // as the uri_split is processed, but we do not want to alter the original passed in. // $base_url = $args['base_url']; // . "/" . $args['blogtype']; // // Check if we are to display an image, from the gallery, or latest images // $display = ''; // $page['blocks'][] = array('type'=>'content', 'html'=>'<pre>' . print_r($categories, true) . "</pre>"); // return array('stat'=>'ok', 'page'=>$page); $uri_split = $args['uri_split']; // // First check if there is a category and remove from uri_split // if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.artistprofiles', 0x100) && isset($categories) && isset($uri_split[0]) && isset($categories[$uri_split[0]])) { $category = $categories[$uri_split[0]]; $page['title'] = $category['title']; $page['breadcrumbs'][] = array('name' => $category['title'], 'url' => $base_url . '/' . $category['permalink']); $base_url .= '/' . $category['permalink']; array_shift($uri_split); } // // Check for an artist // if (isset($uri_split[0]) && $uri_split[0] != '') { $artist_permalink = $uri_split[0]; $display = 'artist'; // // Check for gallery pic request // if (isset($uri_split[1]) && $uri_split[1] == 'gallery' && isset($uri_split[2]) && $uri_split[2] != '') { $image_permalink = $uri_split[2]; $display = 'artistpic'; } $ciniki['response']['head']['og']['url'] .= '/' . $artist_permalink; $base_url .= '/' . $artist_permalink; } elseif (isset($category) && count($category) > 0) { $display = 'categorylist'; } elseif (isset($categories) && count($categories) > 0) { $display = 'categories'; } else { $display = 'list'; } if ($display == 'list' || $display == 'categorylist' && $category['permalink'] == 'featured') { // // Display list as thumbnails // $strsql = "SELECT id, name, subname, permalink, primary_image_id AS image_id " . "FROM ciniki_artistprofiles " . "WHERE business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND status = 10 " . ""; if ($category['permalink'] == 'featured') { $strsql .= "AND (flags&0x01) = 0x01 "; } $strsql .= "ORDER BY sort_name "; $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.artistprofiles', 'artist'); if ($rc['stat'] != 'ok') { return $rc; } if (!isset($rc['rows']) || count($rc['rows']) == 0) { $page['blocks'][] = array('type' => 'content', 'content' => "There are currently no artist profiles available. Please check back soon."); } else { $page['blocks'][] = array('type' => 'tradingcards', 'base_url' => $base_url, 'cards' => $rc['rows']); } } elseif ($display == 'categorylist') { // // Display list as thumbnails // $strsql = "SELECT ciniki_artistprofiles.id, " . "ciniki_artistprofiles.name, " . "ciniki_artistprofiles.subname, " . "ciniki_artistprofiles.permalink, " . "ciniki_artistprofiles.primary_image_id AS image_id " . "FROM ciniki_artistprofiles_tags, ciniki_artistprofiles " . "WHERE ciniki_artistprofiles_tags.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND ciniki_artistprofiles_tags.tag_type = 10 " . "AND ciniki_artistprofiles_tags.permalink = '" . ciniki_core_dbQuote($ciniki, $category['permalink']) . "' " . "AND ciniki_artistprofiles_tags.artist_id = ciniki_artistprofiles.id " . "AND ciniki_artistprofiles.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND ciniki_artistprofiles.status = 10 " . "ORDER BY sort_name " . ""; $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.artistprofiles', 'artist'); if ($rc['stat'] != 'ok') { return $rc; } if (!isset($rc['rows']) || count($rc['rows']) == 0) { $page['blocks'][] = array('type' => 'content', 'content' => "There are currently no artist profiles available. Please check back soon."); } else { $page['blocks'][] = array('type' => 'tradingcards', 'base_url' => $base_url, 'cards' => $rc['rows']); } } elseif ($display == 'categories') { $page['blocks'][] = array('type' => 'tagimages', 'base_url' => $base_url, 'tags' => $categories); } elseif ($display == 'artist' || $display == 'artistpic') { if (isset($category)) { $ciniki['response']['head']['links'][] = array('rel' => 'canonical', 'href' => $args['base_url'] . '/' . $artist_permalink); } ciniki_core_loadMethod($ciniki, 'ciniki', 'artistprofiles', 'private', 'artistLoad'); $rc = ciniki_artistprofiles_artistLoad($ciniki, $business_id, $artist_permalink, array('images' => 'yes', 'audio' => 'yes', 'videos' => 'yes', 'links' => 'yes')); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['artist']) && $rc['artist']['status'] != 10) { return array('stat' => '404', 'err' => array('pkg' => 'ciniki', 'code' => '3038', 'msg' => "We're sorry, the page you requested is not available.")); } if (!isset($rc['artist'])) { return array('stat' => '404', 'err' => array('pkg' => 'ciniki', 'code' => '3043', 'msg' => "We're sorry, the page you requested is not available.")); } else { $artist = $rc['artist']; $page['title'] = $artist['name']; if (isset($artist['subname']) && $artist['subname'] != '') { $page['subtitle'] = $artist['subname']; } $page['breadcrumbs'][] = array('name' => $artist['name'], 'url' => $base_url); if ($display == 'artistpic') { $page['title'] = "<a href='{$base_url}'>" . $artist['name'] . "</a>"; ciniki_core_loadMethod($ciniki, 'ciniki', 'web', 'private', 'galleryFindNextPrev'); $rc = ciniki_web_galleryFindNextPrev($ciniki, $artist['images'], $image_permalink); if ($rc['stat'] != 'ok') { return $rc; } if ($rc['img'] == NULL) { $page['blocks'][] = array('type' => 'message', 'content' => "I'm sorry, but we can't seem to find the image you requested."); } else { $page['breadcrumbs'][] = array('name' => $rc['img']['title'], 'url' => $base_url . '/gallery/' . $image_permalink); if ($rc['img']['title'] != '') { $page['title'] .= ' - ' . $rc['img']['title']; } $block = array('type' => 'galleryimage', 'section' => 'gallery-primary-image', 'primary' => 'yes', 'image' => $rc['img']); if ($rc['prev'] != null) { $block['prev'] = array('url' => $base_url . '/gallery/' . $rc['prev']['permalink'], 'image_id' => $rc['prev']['image_id']); } if ($rc['next'] != null) { $block['next'] = array('url' => $base_url . '/gallery/' . $rc['next']['permalink'], 'image_id' => $rc['next']['image_id']); } $page['blocks'][] = $block; $page['blocks'][] = array('type' => 'gallery', 'title' => 'Additional Images', 'section' => 'gallery-images', 'base_url' => $base_url . '/gallery', 'images' => $artist['images']); } } else { if (isset($artist['primary_image_id']) && $artist['primary_image_id'] > 0) { $page['blocks'][] = array('type' => 'image', 'section' => 'primary-image', 'primary' => 'yes', 'image_id' => $artist['primary_image_id'], 'title' => $artist['name'], 'caption' => $artist['primary_image_caption']); } if (isset($artist['description']) && $artist['description'] != '') { $page['blocks'][] = array('type' => 'content', 'section' => 'content', 'title' => '', 'content' => $artist['description']); } elseif (isset($artist['synopsis']) && $artist['synopsis'] != '') { $page['blocks'][] = array('type' => 'content', 'section' => 'content', 'title' => '', 'content' => $artist['synopsis']); } if (isset($artist['links']) && count($artist['links']) > 0) { $page['blocks'][] = array('type' => 'links', 'section' => 'links', 'title' => 'Links', 'links' => $artist['links']); } if (isset($artist['videos']) && count($artist['videos']) > 0) { $page['blocks'][] = array('type' => 'videolinks', 'section' => 'videos', 'title' => 'Videos', 'videos' => $artist['videos']); } // Add share buttons if (!isset($settings['page-artistprofiles-share-buttons']) || $settings['page-artistprofiles-share-buttons'] == 'yes') { $page['blocks'][] = array('type' => 'sharebuttons', 'section' => 'share', 'pagetitle' => $artist['name'], 'tags' => array()); } // Add gallery if (isset($artist['images']) && ($artist['primary_image_id'] > 0 && count($artist['images']) > 1 || $artist['primary_image_id'] == 0 && count($artist['images']) > 0)) { $page['blocks'][] = array('type' => 'gallery', 'title' => 'Additional Images', 'section' => 'additional-images', 'base_url' => $base_url . '/gallery', 'images' => $artist['images']); } } } } else { return array('stat' => '404', 'err' => array('pkg' => 'ciniki', 'code' => '3044', 'msg' => "We're sorry, the page you requested is not available.")); } // // Setup the sidebar // if (isset($settings['page-artistprofiles-sidebar']) && $settings['page-artistprofiles-sidebar'] == 'yes' && isset($category)) { $page['sidebar'] = array(); // // Get the list of artists for the current category // if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.artistprofiles', 0x200) && $category['permalink'] == 'featured') { $strsql = "SELECT ciniki_artistprofiles.id, " . "ciniki_artistprofiles.name, " . "ciniki_artistprofiles.subname, " . "ciniki_artistprofiles.permalink " . "FROM ciniki_artistprofiles " . "WHERE ciniki_artistprofiles.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND (flags&0x01) = 0x01 " . "AND status = 10 " . "ORDER BY sort_name " . ""; } else { $strsql = "SELECT ciniki_artistprofiles.id, " . "ciniki_artistprofiles.name, " . "ciniki_artistprofiles.subname, " . "ciniki_artistprofiles.permalink " . "FROM ciniki_artistprofiles_tags, ciniki_artistprofiles " . "WHERE ciniki_artistprofiles_tags.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND ciniki_artistprofiles_tags.tag_type = 10 " . "AND ciniki_artistprofiles_tags.permalink = '" . ciniki_core_dbQuote($ciniki, $category['permalink']) . "' " . "AND ciniki_artistprofiles_tags.artist_id = ciniki_artistprofiles.id " . "AND ciniki_artistprofiles.business_id = '" . ciniki_core_dbQuote($ciniki, $business_id) . "' " . "AND status = 10 " . "ORDER BY sort_name " . ""; } ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbHashQuery'); $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.artistprofiles', 'profile'); if ($rc['stat'] != 'ok') { return $rc; } if (isset($rc['rows'])) { $artists = $rc['rows']; // // FIXME: Finish code for sidebar menu // } } return array('stat' => 'ok', 'page' => $page); }
function ciniki_merchandise_productUpdate(&$ciniki) { // // Find all the required and optional arguments // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'prepareArgs'); $rc = ciniki_core_prepareArgs($ciniki, 'no', array('business_id' => array('required' => 'yes', 'blank' => 'no', 'name' => 'Business'), 'product_id' => array('required' => 'yes', 'blank' => 'no', 'name' => 'Merchandise Product'), 'code' => array('required' => 'no', 'blank' => 'yes', 'trimblanks' => 'yes', 'name' => 'Product Code'), 'name' => array('required' => 'no', 'blank' => 'no', 'trimblanks' => 'yes', 'name' => 'Product Name'), 'permalink' => array('required' => 'no', 'blank' => 'no', 'name' => 'Permalink'), 'status' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Status'), 'sequence' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Sequence'), 'flags' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Options'), 'unit_amount' => array('required' => 'no', 'blank' => 'no', 'type' => 'currency', 'name' => 'Price'), 'unit_discount_amount' => array('required' => 'no', 'blank' => 'yes', 'type' => 'currency', 'name' => 'Discount Amount'), 'unit_discount_percentage' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Discount Percentage'), 'taxtype_id' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Tax Type'), 'inventory' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Inventory'), 'shipping_other' => array('required' => 'no', 'blank' => 'yes', 'type' => 'currency', 'name' => 'Shipping Cost Other'), 'shipping_CA' => array('required' => 'no', 'blank' => 'yes', 'type' => 'currency', 'name' => 'Shipping Canada'), 'shipping_US' => array('required' => 'no', 'blank' => 'yes', 'type' => 'currency', 'name' => 'Shipping USA'), 'primary_image_id' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Image'), 'synopsis' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Synopsis'), 'description' => array('required' => 'no', 'blank' => 'yes', 'name' => 'Description'), 'categories' => array('required' => 'no', 'blank' => 'yes', 'type' => 'list', 'delimiter' => '::', 'name' => 'Categories'))); if ($rc['stat'] != 'ok') { return $rc; } $args = $rc['args']; // // Make sure this module is activated, and // check permission to run this function for this business // ciniki_core_loadMethod($ciniki, 'ciniki', 'merchandise', 'private', 'checkAccess'); $rc = ciniki_merchandise_checkAccess($ciniki, $args['business_id'], 'ciniki.merchandise.productUpdate'); if ($rc['stat'] != 'ok') { return $rc; } // // Check if product already exists // $strsql = "SELECT id, code, name " . "FROM ciniki_merchandise " . "WHERE business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "AND id = '" . ciniki_core_dbQuote($ciniki, $args['product_id']) . "' " . ""; $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.merchandise', 'product'); if ($rc['stat'] != 'ok') { return $rc; } if (!isset($rc['product'])) { return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.20', 'msg' => 'That product does not exist.')); } $product = $rc['product']; // // Check to make sure code is unique // if (isset($args['code'])) { $strsql = "SELECT id, code, permalink " . "FROM ciniki_merchandise " . "WHERE business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "AND code = '" . ciniki_core_dbQuote($ciniki, $args['code']) . "' " . "AND id <> '" . ciniki_core_dbQuote($ciniki, $args['product_id']) . "' " . ""; $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.merchandise', 'item'); if ($rc['stat'] != 'ok') { return $rc; } if ($rc['num_rows'] > 0) { return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.21', 'msg' => 'You already have a product with that code, please choose another.')); } } if (isset($args['name']) || isset($args['code'])) { if (ciniki_core_checkModuleFlags($ciniki, 'ciniki.merchandise', 0x1)) { ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'makePermalink'); $args['permalink'] = ciniki_core_makePermalink($ciniki, (isset($args['code']) ? $args['code'] : $product['code']) . '-' . isset($args['name']) ? $args['name'] : $product['name']); } else { ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'makePermalink'); $args['permalink'] = ciniki_core_makePermalink($ciniki, isset($args['name']) ? $args['name'] : $product['name']); } // // Make sure the permalink is unique // $strsql = "SELECT id, code, name, permalink " . "FROM ciniki_merchandise " . "WHERE business_id = '" . ciniki_core_dbQuote($ciniki, $args['business_id']) . "' " . "AND permalink = '" . ciniki_core_dbQuote($ciniki, $args['permalink']) . "' " . "AND id <> '" . ciniki_core_dbQuote($ciniki, $args['product_id']) . "' " . ""; $rc = ciniki_core_dbHashQuery($ciniki, $strsql, 'ciniki.merchandise', 'item'); if ($rc['stat'] != 'ok') { return $rc; } if ($rc['num_rows'] > 0) { return array('stat' => 'fail', 'err' => array('code' => 'ciniki.merchandise.22', 'msg' => 'You already have an merchandise product with this name, please choose another.')); } } // // Start transaction // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbTransactionStart'); ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbTransactionRollback'); ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbTransactionCommit'); ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'dbAddModuleHistory'); $rc = ciniki_core_dbTransactionStart($ciniki, 'ciniki.merchandise'); if ($rc['stat'] != 'ok') { return $rc; } // // Update the Merchandise Product in the database // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'objectUpdate'); $rc = ciniki_core_objectUpdate($ciniki, $args['business_id'], 'ciniki.merchandise.product', $args['product_id'], $args, 0x4); if ($rc['stat'] != 'ok') { ciniki_core_dbTransactionRollback($ciniki, 'ciniki.merchandise'); return $rc; } // // Update the categories // if (isset($args['categories'])) { ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'tagsUpdate'); $rc = ciniki_core_tagsUpdate($ciniki, 'ciniki.merchandise', 'tag', $args['business_id'], 'ciniki_merchandise_tags', 'ciniki_merchandise_history', 'product_id', $args['product_id'], 10, $args['categories']); if ($rc['stat'] != 'ok') { ciniki_core_dbTransactionRollback($ciniki, 'ciniki.merchandise'); return $rc; } } // // Commit the transaction // $rc = ciniki_core_dbTransactionCommit($ciniki, 'ciniki.merchandise'); if ($rc['stat'] != 'ok') { return $rc; } // // Update the last_change date in the business modules // Ignore the result, as we don't want to stop user updates if this fails. // ciniki_core_loadMethod($ciniki, 'ciniki', 'businesses', 'private', 'updateModuleChangeDate'); ciniki_businesses_updateModuleChangeDate($ciniki, $args['business_id'], 'ciniki', 'merchandise'); // // Update the web index if enabled // ciniki_core_loadMethod($ciniki, 'ciniki', 'core', 'private', 'hookExec'); ciniki_core_hookExec($ciniki, $args['business_id'], 'ciniki', 'web', 'indexObject', array('object' => 'ciniki.merchandise.product', 'object_id' => $args['product_id'])); return array('stat' => 'ok'); }