/** * Submits a bug report to Dioscouri. * Thanks so much! They really help improve the product! */ function sendBug() { $mainframe = JFactory::getApplication(); $body = JRequest::getVar('body'); $name = JRequest::getVar('title'); $body .= "\n\n Project: tienda"; $body .= "\n Tracker: Bug"; $body .= "\n Affected Version: " . Tienda::getVersion(); $doc = JDocument::getInstance('raw'); ob_start(); $option = JRequest::getCmd('option'); $db = JFactory::getDBO(); $path = JPATH_ADMINISTRATOR . '/components/com_admin/'; require_once $path . 'admin.admin.html.php'; $path .= 'tmpl/'; require_once $path . 'sysinfo_system.php'; require_once $path . 'sysinfo_directory.php'; require_once $path . 'sysinfo_phpinfo.php'; require_once $path . 'sysinfo_phpsettings.php'; require_once $path . 'sysinfo_config.php'; jimport('joomla.filesystem.file'); $contents = ob_get_contents(); ob_end_clean(); $doc->setBuffer($contents); $contents = $doc->render(); $sitename = $config->get('sitename', $mainframe->getCfg('sitename')); // write file with info $config = JFactory::getConfig(); $filename = 'system_info_' . $sitename . '.html'; $file = JPATH_SITE . '/tmp/' . $filename; JFile::write($file, $contents); $mailer = JFactory::getMailer(); $success = false; // For now, bug submission goes to info@dioscouri.com, // but in the future, it will go to projects@dioscouri.com // (once we get the Redmine auto-create working properly // and format the subject/body of the email properly) $mailer->addRecipient('*****@*****.**'); $mailer->setSubject($name); $mailfrom = $config->get('emails_defaultemail', $mainframe->getCfg('mailfrom')); $fromname = $config->get('emails_defaultname', $mainframe->getCfg('fromname')); // check user mail format type, default html $mailer->setBody($body); $mailer->addAttachment($file); $sender = array($mailfrom, $fromname); $mailer->setSender($sender); $sent = $mailer->send(); if ($sent == '1') { $success = true; } JFile::delete($file); if ($success) { $msg = JText::_('COM_TIENDA_BUG_SUBMIT_OK'); $msgtype = 'message'; } else { $msg = JText::_('COM_TIENDA_BUG_SUBMIT_FAIL'); $msgtype = 'notice'; } $mainframe->redirect(JRoute::_('index.php?option=com_tienda&view=dashboard'), $msg, $msgtype); }
/** * downloads a file * * @return void */ function downloadFile() { $user = JFactory::getUser(); $productfile_id = intval(JRequest::getvar('id', '', 'request', 'int')); $product_id = intval(JRequest::getvar('product_id', '', 'request', 'int')); $link = 'index.php?option=com_tienda&view=products&task=edit&id=' . $product_id; Tienda::load('TiendaHelperBase', 'helpers._base'); $helper = TiendaHelperBase::getInstance('ProductDownload', 'TiendaHelper'); JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_tienda' . DS . 'tables'); $productfile = JTable::getInstance('ProductFiles', 'TiendaTable'); $productfile->load($productfile_id); if (empty($productfile->productfile_id)) { $this->messagetype = 'notice'; $this->message = JText::_('COM_TIENDA_INVALID FILE'); $this->setRedirect($link, $this->message, $this->messagetype); return false; } // log and download Tienda::load('TiendaFile', 'library.file'); // geting the ProductDownloadId to updated for which productdownload_max is greater then 0 $productToDownload = $helper->getProductDownloadInfo($productfile->productfile_id, $user->id); if ($downloadFile = TiendaFile::download($productfile)) { $link = JRoute::_($link, false); $this->setRedirect($link); } }
/** * Method to process the export * @return */ function processExport() { $export = new JObject(); if (empty($this->_model)) { $this->_errors = JText::_('COM_TIENDA_PLEASE_SET_A_MODEL_IN_THE_PLUGIN_METHOD_PROCESSEXPORT'); return $this; } $classname = 'TiendaGenericExporterModel' . $this->_model; if (version_compare(JVERSION, '1.6.0', 'ge')) { // Joomla! 1.6+ code here Tienda::load($classname, 'genericexporter.genericexporter.models.' . $this->_model, array('site' => 'site', 'type' => 'plugins', 'ext' => 'tienda')); } else { // Joomla! 1.5 code here Tienda::load($classname, 'genericexporter.models.' . $this->_model, array('site' => 'site', 'type' => 'plugins', 'ext' => 'tienda')); } $class = new $classname(); $items = $class->loadDataList(); $this->_modelone = $class->getSingleName(); if (empty($items)) { $this->_errors = JText::_('COM_TIENDA_NO_DATA_FOUND'); return $this; } //convert items to array upto child nodes //$items = $this->objectToArray( $items ); $f_name = $this->_model . '_' . time() . '.xml'; $this->_link = 'tmp/' . $f_name; $this->_name = $f_name; if (!($res = $this->fromXMLToFile('tmp/' . $f_name, $items))) { $this->_errors = JText::_('COM_TIENDA_ERROR_SAVING_FILE'); } return $this; }
/** * Checks row for data integrity. * Assumes working dates have been converted to local time for display, * so will always convert working dates to GMT * * @return unknown_type */ function check() { if (empty($this->product_id)) { $this->setError(JText::_('COM_TIENDA_PRODUCT_ASSOCIATION_REQUIRED')); return false; } $offset = JFactory::getConfig()->getValue('config.offset'); if (isset($this->publishing_date)) { $this->publishing_date = date('Y-m-d H:i:s', strtotime(TiendaHelperBase::getOffsetDate($this->publishing_date, -$offset))); } $nullDate = $this->_db->getNullDate(); Tienda::load('TiendaHelperBase', 'helpers._base'); if (empty($this->created_date) || $this->created_date == $nullDate) { $date = JFactory::getDate(); $this->created_date = $date->toMysql(); } $date = JFactory::getDate(); $this->modified_date = $date->toMysql(); $act = strtotime(Date('Y-m-d', strtotime($this->publishing_date))); $db = $this->_db; if (empty($this->product_issue_id)) { $q = 'SELECT `publishing_date` FROM `#__tienda_productissues` WHERE `product_id`=' . $this->product_id . ' ORDER BY `publishing_date` DESC LIMIT 1'; $db->setQuery($q); $next = $db->loadResult(); if ($next === null) { return true; } $next = strtotime($next); if ($act <= $next) { $this->setError(JText::_('COM_TIENDA_PUBLISHING_DATE_IS_NOT_PRESERVING_ISSUE_ORDER') . ' - ' . $this->publishing_date); return false; } } else { $q = 'SELECT `publishing_date` FROM `#__tienda_productissues` WHERE `product_issue_id`=' . $this->product_issue_id; $db->setQuery($q); $original = $db->loadResult(); if ($act == strtotime(Date('Y-m-d', strtotime($original)))) { return true; } $q = 'SELECT `publishing_date` FROM `#__tienda_productissues` WHERE `product_id`=' . $this->product_id . ' AND `publishing_date` < \'' . $original . '\' ORDER BY `publishing_date` DESC LIMIT 1'; $db->setQuery($q); $prev = $db->loadResult(); $q = 'SELECT `publishing_date` FROM `#__tienda_productissues` WHERE `product_id`=' . $this->product_id . ' AND `publishing_date` > \'' . $original . '\' ORDER BY `publishing_date` ASC LIMIT 1'; $db->setQuery($q); $next = $db->loadResult(); if ($prev === null) { $prev = 0; } else { $prev = strtotime($prev); } if ($next) { $next = strtotime($next); } if ($prev >= $act || $next && $next <= $act) { $this->setError(JText::_('COM_TIENDA_PUBLISHING_DATE_IS_NOT_PRESERVING_ISSUE_ORDER') . ' - ' . $this->publishing_date); return false; } } return true; }
function fetchElement($name, $value, &$node, $control_name) { $output = ' <input type="text" class="text_area" value="" id="pluginstiendaproductPrice" name="plugins[tiendaproductPrice]"> <span class="k2Note">' . JText::_('Set Normal Price Now Special Prices Later') . '</span> '; $id = JRequest::getInt('cid'); if ($id) { $K2Item = JTable::getInstance('K2Item', 'Table'); $K2Item->load($id); $params = new K2Parameter($K2Item->plugins, JPATH_PLUGINS . '/k2/tienda.xml', 'tienda'); $productID = $params->get('productID'); if ($productID) { Tienda::load('TiendaUrl', 'library.url'); Tienda::load("TiendaHelperProduct", 'helpers.product'); $prices = TiendaHelperProduct::getPrices($productID); if (count($prices)) { $output = '<div class="tiendaButton">' . TiendaUrl::popup("index.php?option=com_tienda&controller=products&task=setprices&id=" . $productID . "&tmpl=component", JText::_('COM_TIENDA_SET_PRICES')) . '</div>'; $output .= '<div>'; foreach (@$prices as $price) { $output .= ' <div> <span>' . TiendaHelperBase::currency($price->product_price) . '</span> <div class="tiendaButton"><a href="' . $price->link_remove . '&return=' . base64_encode("index.php?option=com_k2&view=item&cid=" . $id) . '">' . JText::_('Remove') . '</a></div> </div>'; } $output .= '</div>'; } } } return $output; }
/** * Override parent::_getData() * * @return unknown_type */ function _getData() { $app = JFactory::getApplication(); Tienda::load('TiendaQuery', 'library.query'); // just in case $db = JFactory::getDbo(); $state = $this->_getState(); $model = $this->_getModel(); // filter only complete orders ( 3 - Shipped, 5 - Complete, 17 - Payment Received ) $order_states = array('3', '5', '17'); $model->setState('filter_orderstates', $order_states); $model->setState('order', '`price_total`'); $model->setState('direction', 'DESC'); $query = $model->getQuery(true); $query->group('p.manufacturer_id'); $field[] = " SUM(tbl.orderitem_final_price) AS `price_total` "; $field[] = " SUM(tbl.orderitem_quantity) AS `count_items` "; $query->select($field); $model->setQuery($query); $list = $model->getList(); if (!count($list)) { return $list; } return $list; }
/** * Processes a new order * * @param $order_id * @return unknown_type */ public function processOrder($order_id) { // get the order $model = JModel::getInstance('Orders', 'TiendaModel'); $model->setId($order_id); $order = $model->getItem(); $this->_orderFromModel = $order; $orderTable = $model->getTable(); $orderTable->load($order_id); $this->_order = $orderTable; $this->_date = JFactory::getDate(); if ($order->user_id < Tienda::getGuestIdStart()) { $this->_user = $order->user_id; } else { $this->_user = JFactory::getUser($order->user_id); } // find the products in the order that are integrated foreach ($order->orderitems as $orderitem) { $model = JModel::getInstance('Products', 'TiendaModel'); $product = $model->getTable(); $product->load($orderitem->product_id); $this->_product = $product; $this->_orderitem = $orderitem; if (!empty($product->product_sql)) { $this->processSQL($product->product_sql); } } }
/** * * @return unknown_type */ function getItems() { // Check the registry to see if our Tienda class has been overridden if (!class_exists('Tienda')) { JLoader::register("Tienda", JPATH_ADMINISTRATOR . "/components/com_tienda/defines.php"); } // load the config class Tienda::load('Tienda', 'defines'); JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/tables'); // get the model Tienda::load('TiendaModelCategories', 'models.categories'); $model = new TiendaModelCategories(array()); // $model = JModel::getInstance( 'Categories', 'TiendaModel' ); doesnt work sometimes without no apparent reason // TODO Make this depend on the current filter_category? // setting the model's state tells it what items to return $model->setState('filter_enabled', '1'); $model->setState('order', 'tbl.lft'); // set the states based on the parameters // using the set filters, get a list $items = $model->getList(); if (!empty($items)) { foreach ($items as $item) { Tienda::load('TiendaHelperRoute', 'helpers.route'); $item->itemid = TiendaHelperRoute::category($item->category_id, true); if (empty($item->itemid)) { $item->itemid = $this->params->get('itemid'); } } } return $items; }
/** * Sets the model's state * * @return array() */ function _setModelState() { $state = parent::_setModelState(); $app = JFactory::getApplication(); $model = $this->getModel($this->get('suffix')); $ns = $this->getNamespace(); $state['order'] = $app->getUserStateFromRequest($ns . '.filter_order', 'filter_order', 'tbl.created_datetime', 'cmd'); $state['direction'] = $app->getUserStateFromRequest($ns . '.filter_direction', 'filter_direction', 'DESC', 'word'); $state['filter_orderid'] = $app->getUserStateFromRequest($ns . 'filter_orderid', 'filter_orderid', '', ''); $state['filter_type'] = $app->getUserStateFromRequest($ns . 'filter_type', 'filter_type', '', ''); $state['filter_transactionid'] = $app->getUserStateFromRequest($ns . 'filter_transactionid', 'filter_transactionid', '', ''); $state['filter_user'] = $app->getUserStateFromRequest($ns . 'filter_user', 'filter_user', '', ''); $state['filter_userid'] = $app->getUserStateFromRequest($ns . 'filter_userid', 'filter_userid', '', ''); $state['filter_id_from'] = $app->getUserStateFromRequest($ns . 'id_from', 'filter_id_from', '', ''); $state['filter_id_to'] = $app->getUserStateFromRequest($ns . 'id_to', 'filter_id_to', '', ''); $state['filter_date_from'] = $app->getUserStateFromRequest($ns . 'date_from', 'filter_date_from', '', ''); $state['filter_date_to'] = $app->getUserStateFromRequest($ns . 'date_to', 'filter_date_to', '', ''); $state['filter_datetype'] = 'created'; $state['filter_total_from'] = $app->getUserStateFromRequest($ns . 'filter_total_from', 'filter_total_from', '', ''); $state['filter_total_to'] = $app->getUserStateFromRequest($ns . 'filter_total_to', 'filter_total_to', '', ''); $state['filter_enabled'] = $app->getUserStateFromRequest($ns . 'filter_enabled', 'filter_enabled', '', ''); $state['filter_lifetime'] = $app->getUserStateFromRequest($ns . 'filter_lifetime', 'filter_lifetime', '', ''); if (Tienda::getInstance()->get('display_subnum', 0)) { $state['filter_subnum'] = $app->getUserStateFromRequest($ns . 'filter_subnum', 'filter_subnum', '', ''); } foreach (@$state as $key => $value) { $model->setState($key, $value); } return $state; }
/** * Method to calculate statistics about manufacturers in an order * * @param $items Array of order items * * @return Array with list of manufacturers and their stats */ function calculateStatsOrder($items) { $db = JFactory::getDbo(); JModel::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/models'); Tienda::load('TiendaQuery', 'library.query'); $q = new TiendaQuery(); $q->select('manufacturer_id'); $q->from('`#__tienda_products`'); $result = array(); foreach ($items as $item) { $q->where('product_id = ' . (int) $item->product_id); $db->setQuery($q); $res = $db->loadObject(); if ($res == null) { $man_id = 0; } else { $man_id = $res->manufacturer_id; } if (!isset($result[$man_id])) { $model = JModel::getInstance('Manufacturers', 'TiendaModel'); $model->setId($man_id); if (!($man_item = $model->getItem())) { $man_item = new stdClass(); } $result[$man_id] = $man_item; $result[$man_id]->subtotal = 0; $result[$man_id]->total_tax = 0; } $result[$man_id]->subtotal += $item->orderitem_final_price; $result[$man_id]->total_tax += $item->orderitem_tax; } return $result; }
function setRates() { Tienda::load('TiendaGrid', 'library.grid'); Tienda::load('TiendaSelect', 'library.select'); $this->includeCustomModel('ShippingRatesWeightbased'); $sid = JRequest::getVar('sid'); $this->includeCustomTables(); $row = JTable::getInstance('ShippingMethodsWeightbased', 'TiendaTable'); $row->load($sid); $model = JModel::getInstance('ShippingRatesWeightbased', 'TiendaModel'); $model->setState('filter_shippingmethod', $sid); $app = JFactory::getApplication(); $ns = $this->getNamespace(); $state = array(); $state['limit'] = $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit'), 'int'); $state['limitstart'] = $app->getUserStateFromRequest($ns . 'limitstart', 'limitstart', 0, 'int'); foreach (@$state as $key => $value) { $model->setState($key, $value); } $items = $model->getList(); //form $form = array(); $form['action'] = $this->baseLink(); // view $view = $this->getView('shipping_weightbased', 'html'); $view->hidemenu = true; $view->hidestats = true; $view->setModel($model, true); $view->assign('row', $row); $view->assign('items', $items); $view->assign('form2', $form); $view->assign('baseLink', $this->baseLink()); $view->setLayout('setrates'); $view->display(); }
/** * Adds items to the pathway if they aren't already present * * @param array $items A full pathway to the category, an array of pathway objects * @param int $item_id A default Itemid to use if none is found */ function insertCategories($items, $item_id = '') { $app = JFactory::getApplication(); $pathway = $app->getPathway(); $pathway_values = $pathway->getPathway(); // find the array_key of the first item in items that is in pathway $found = false; $found_key = 0; $new_pathway = array(); foreach ($items as $item) { if (!$found) { foreach ($pathway_values as $key => $object) { if (!$found) { if ($object->name == $item->name) { $found = true; $found_key = $key; } } } } } foreach ($pathway_values as $key => $object) { if ($key < $found_key || !$found) { $new_pathway[] = $object; } } // $new_pathway now has the pathway UP TO where we should inject the category pathway foreach ($items as $item) { $category_itemid = !empty($item_id) ? $item_id : Tienda::getClass("TiendaHelperRoute", 'helpers.route')->category($item->id, true); $item->link .= "&Itemid=" . $category_itemid; $new_pathway[] = $item; } $pathway->setPathway($new_pathway); return $new_pathway; }
/** * * @return unknown_type */ function getItems() { // Check the registry to see if our Tienda class has been overridden if (!class_exists('Tienda')) { JLoader::register("Tienda", JPATH_ADMINISTRATOR . "/components/com_tienda/defines.php"); } // load the config class Tienda::load('Tienda', 'defines'); JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/tables'); JModel::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/models'); // get the model $model = JModel::getInstance('Manufacturers', 'TiendaModel'); // TODO Make this depend on the current filter_category? // setting the model's state tells it what items to return $model->setState('filter_enabled', '1'); $model->setState('order', 'tbl.manufacturer_name'); // set the states based on the parameters // using the set filters, get a list $items = $model->getList(); if (!empty($items)) { foreach ($items as $item) { // this gives error $item->itemid = Tienda::getClass("TiendaHelperRoute", 'helpers.route')->manufacturer($item->manufacturer_id, false); if (empty($item->itemid)) { $item->itemid = $this->params->get('itemid'); } } } return $items; }
function fetchElement($name, $value, &$node, $control_name) { $output = '<span class="k2Note">' . JText::_('Click Apply to be able to create product attributes') . '</span>'; $id = JRequest::getInt('cid'); if ($id) { $K2Item = JTable::getInstance('K2Item', 'Table'); $K2Item->load($id); $params = new K2Parameter($K2Item->plugins, JPATH_PLUGINS . '/k2/tienda.xml', 'tienda'); $productID = $params->get('productID'); if ($productID) { Tienda::load('TiendaUrl', 'library.url'); Tienda::load("TiendaHelperProduct", 'helpers.product'); $attributes = TiendaHelperProduct::getAttributes($productID); $output = '<div class="tiendaButton">' . TiendaUrl::popup("index.php?option=com_tienda&controller=products&task=setattributes&id=" . $productID . "&tmpl=component", JText::_('Set Attributes')) . '</div>'; $output .= '<div>'; foreach (@$attributes as $attribute) { $output .= ' <div> <span>' . $attribute->productattribute_name . '(' . $attribute->option_names_csv . ')</span> <div class="tiendaButton">' . TiendaUrl::popup("index.php?option=com_tienda&controller=products&task=setattributeoptions&id=" . $attribute->productattribute_id . "&tmpl=component", JText::_('Set Attribute Options')) . '</div> <div class="tiendaButton"><a href="' . "index.php?option=com_tienda&controller=productattributes&task=delete&cid[]=" . $attribute->productattribute_id . "&return=" . base64_encode("index.php?option=com_k2&view=item&cid=" . $id) . '">' . JText::_('Remove') . '</a></div> </div>'; } $output .= '</div>'; } } return $output; }
/** * Renders the DirectPayment form * * @param object $row * @param array $prepop Array of values to fill in the form fields * @param boolean $display_note * @param boolean $display_typeinfo * @return string * @access public */ function renderForm($row, $prepop = array(), $display_note = '1', $display_typeinfo = '1') { $user = JFactory::getUser(); $secure_post = $this->_params->get('secure_post', '0'); $config = Tienda::getInstance(); /* * get all necessary data and prepare vars for assigning to the template */ $vars = new JObject(); $vars->action_url = JRoute::_("index.php?option=com_tienda&controller=checkout&task=confirmPayment&orderpayment_type={$this->_plugin_type}&paction=process_direct_payment", false, $secure_post); $vars->prepop = $prepop; $vars->user = $user; $vars->cctype_input = $this->_getCardTypesInput('cardtype', !empty($prepop['cardtype']) ? $prepop['cardtype'] : ''); $vars->country_input = $this->_getCountriesInput('country', !empty($prepop['country']) ? $prepop['country'] : ''); $vars->row = $row; $vars->token_input = JHTML::_('form.token'); $vars->display_note = $display_note; $vars->display_typeinfo = $display_typeinfo; $vars->display_value = $config->get('display_value', '1'); $vars->display_period = $config->get('display_period', '1'); $vars->currency_preval = $config->get('currency_preval', '$'); $vars->currency_postval = $config->get('currency_postval', ' USD'); $html = $this->_getLayout('directpayment_form', $vars); return $html; }
function export() { Tienda::load('TiendaCSV', 'library.csv'); $request = JRequest::get('request'); //// load the plugins JPluginHelper::importPlugin('tienda'); JModel::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/models'); $params = json_decode(base64_decode($request['exportParams'])); $model = JModel::getInstance($params->view, 'TiendaModel'); $list = $model->getList(); $arr = array(); $header = array(); // header -> it'll be filled out when $fill_header = true; // we need to fill header for ($i = 0, $c = count($list); $i < $c; $i++) { if ($fill_header) { $list_vars = get_object_vars($list[$i]); foreach ($list_vars as $key => $value) { if ($fill_header) { $header[] = $key; } } $fill_header = false; // header is filled } $arr[] = $this->objectToString($list[$i], true); } $f_name = 'tmp/' . $params->view . '_' . time() . '.csv'; $res = TiendaCSV::FromArrayToFile($f_name, $arr, $header); $this->render_page($f_name, $params->view); }
public function __construct($config = array()) { parent::__construct($config); $this->defines = Tienda::getInstance(); if (JDEBUG) { $this->cache_enabled = false; } }
function __construct($config = array()) { parent::__construct($config); $this->defines = Tienda::getInstance(); Tienda::load("TiendaHelperRoute", 'helpers.route'); $this->router = new TiendaHelperRoute(); $this->user = JFactory::getUser(); }
/** * Include a particular Tienda Model * @param $name the name of the mode (ex: products) */ protected function includeTiendaModel($name) { if (strtolower($name) != 'base') { Tienda::load('TiendaModel' . ucfirst(strtolower($name)), 'models.' . strtolower($name)); } else { Tienda::load('TiendaModelBase', 'models._base'); } }
function __construct($config = array()) { parent::__construct($config); if (empty($this->helpers)) { $this->helpers = array(); } Tienda::load("TiendaHelperProduct", 'helpers.product'); $this->helpers['product'] = new TiendaHelperProduct(); }
/** * Method to build the pathway/breadcrumbs * @return string */ function pathway() { $pathway = ''; $catid = JRequest::getInt('filter_category'); if ($this->params->get('showhome')) { $homeText = $this->params->get('hometext'); $homeText = empty($homeText) ? JText::_('COM_TIENDA_HOME') : $homeText; $pathway .= " <a href='index.php'>" . $homeText . '</a> '; } // get the root category JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/tables'); $root = JTable::getInstance('Categories', 'TiendaTable')->getRoot(); $root_itemid = Tienda::getClass("TiendaHelperRoute", 'helpers.route')->category($root->category_id, true); $catRoot = $this->params->get('showcatroot', '1'); if ($catRoot && $catid != $root->category_id) { $pathway .= $this->getSeparator(); $link = JRoute::_("index.php?option=com_tienda&view=products&filter_category=" . $root->category_id . "&Itemid=" . $root_itemid, false); $rootText = $this->params->get('roottext'); $rootText = empty($rootText) ? JText::_('COM_TIENDA_ALL_CATEGORIES') : $rootText; $pathway .= " <a href='{$link}'>" . $rootText . '</a> '; } $table = JTable::getInstance('Categories', 'TiendaTable'); $table->load($catid); if (empty($table->category_id)) { return $pathway; } $path = $table->getPath(); foreach (@$path as $cat) { if (!$cat->isroot) { if (!($itemid = Tienda::getClass("TiendaHelperRoute", 'helpers.route')->category($cat->category_id, true))) { $itemid = $root_itemid; } $slug = $cat->category_alias ? ":{$cat->category_alias}" : ""; $link = JRoute::_("index.php?option=com_tienda&view=products&filter_category=" . $cat->category_id . $slug . "&Itemid=" . $itemid, false); if (!empty($pathway)) { $pathway .= $this->getSeparator(); } $pathway .= " <a href='{$link}'>" . JText::_($cat->category_name) . '</a> '; } } if (!empty($pathway)) { $pathway .= $this->getSeparator(); } if ($linkSelf = $this->params->get('linkself')) { if (!($itemid = Tienda::getClass("TiendaHelperRoute", 'helpers.route')->category($table->category_id, true))) { $itemid = $root_itemid; } $slug = $table->category_alias ? ":{$table->category_alias}" : ""; $link = JRoute::_("index.php?option=com_tienda&view=products&filter_category=" . $table->category_id . $slug . "&Itemid=" . $itemid, false); $pathway .= " <a href='{$link}'>" . JText::_($table->category_name) . '</a> '; } else { $pathway .= JText::_($table->category_name); } return $pathway; }
/** * Method to get content article data for the frontpage * * @since 1.5 */ function getList() { $where = array(); $mainframe = JFactory::getApplication(); if (!empty($this->_list)) { return $this->_list; } // Initialize variables $db = $this->getDBO(); $filter = null; // Get some variables from the request // $sectionid = JRequest::getVar( 'sectionid', -1, '', 'int' ); // $redirect = $sectionid; // $option = JRequest::getCmd( 'option' ); $filter_order = $mainframe->getUserStateFromRequest('userelement.filter_order', 'filter_order', '', 'cmd'); $filter_order_Dir = $mainframe->getUserStateFromRequest('userelement.filter_order_Dir', 'filter_order_Dir', '', 'word'); $limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int'); $limitstart = $mainframe->getUserStateFromRequest('userelement.limitstart', 'limitstart', 0, 'int'); $search = $mainframe->getUserStateFromRequest('userelement.search', 'search', '', 'string'); $search = JString::strtolower($search); if (!$filter_order) { $filter_order = 'tbl.product_id'; } $order = ' ORDER BY ' . $filter_order . ' ' . $filter_order_Dir; $all = 1; // Keyword filter if ($search) { $where[] = 'LOWER( tbl.product_id ) LIKE ' . $db->Quote('%' . $db->getEscaped($search, true) . '%', false); $where[] = 'LOWER( tbl.product_name ) LIKE ' . $db->Quote('%' . $db->getEscaped($search, true) . '%', false); } // Build the where clause of the query $where = count($where) ? ' WHERE ' . implode(' OR ', $where) : ''; // Get the total number of records $query = 'SELECT COUNT(tbl.product_id)' . ' FROM #__tienda_products AS tbl' . $where; $db->setQuery($query); $total = $db->loadResult(); // Create the pagination object jimport('joomla.html.pagination'); $this->_page = new JPagination($total, $limitstart, $limit); // Get the products $query = 'SELECT tbl.*, pp.* ' . ' FROM #__tienda_products AS tbl' . ' LEFT JOIN #__tienda_productprices pp ON pp.product_id = tbl.product_id ' . $where . $order; $db->setQuery($query, $this->_page->limitstart, $this->_page->limit); $this->_list = $db->loadObjectList(); //currency formatting Tienda::load('TiendaHelperBase', 'helpers._base'); foreach ($this->_list as $item) { $item->product_price = TiendaHelperBase::currency($item->product_price); } // If there is a db query error, throw a HTTP 500 and exit if ($db->getErrorNum()) { JError::raiseError(500, $db->stderr()); return false; } return $this->_list; }
/** * * @return void **/ function _default($tpl = null) { Tienda::load('TiendaSelect', 'library.select'); Tienda::load('TiendaGrid', 'library.grid'); Tienda::load('TiendaTools', 'library.tools'); // check config $row = Tienda::getInstance(); $this->assign('row', $row); // add toolbar buttons JToolBarHelper::apply('save'); JToolBarHelper::cancel('close', 'COM_TIENDA_CLOSE'); // plugins $filtered = array(); $items = TiendaTools::getPlugins(); for ($i = 0; $i < count($items); $i++) { $item =& $items[$i]; // Check if they have an event if ($hasEvent = TiendaTools::hasEvent($item, 'onListConfigTienda')) { // add item to filtered array $filtered[] = $item; } } $items = $filtered; $this->assign('items_sliders', $items); // Add pane jimport('joomla.html.pane'); $sliders = JPane::getInstance('sliders'); $this->assign('sliders', $sliders); // form $validate = JUtility::getToken(); $form = array(); $view = strtolower(JRequest::getVar('view')); $form['action'] = "index.php?option=com_tienda&controller={$view}&view={$view}"; $form['validate'] = "<input type='hidden' name='{$validate}' value='1' />"; $this->assign('form', $form); // set the required image // TODO Fix this to use defines $required = new stdClass(); $required->text = JText::_('COM_TIENDA_REQUIRED'); $required->image = "<img src='" . JURI::root() . "/media/com_tienda/images/required_16.png' alt='{$required->text}'>"; $this->assign('required', $required); // Elements $elementArticleModel = JModel::getInstance('ElementArticle', 'TiendaModel'); $this->assign('elementArticleModel', $elementArticleModel); // terms $elementArticle_terms = $elementArticleModel->fetchElement('article_terms', @$row->get('article_terms')); $resetArticle_terms = $elementArticleModel->clearElement('article_terms', '0'); $this->assign('elementArticle_terms', $elementArticle_terms); $this->assign('resetArticle_terms', $resetArticle_terms); // shipping $elementArticle_shipping = $elementArticleModel->fetchElement('article_shipping', @$row->get('article_shipping')); $resetArticle_shipping = $elementArticleModel->clearElement('article_shipping', '0'); $this->assign('elementArticle_shipping', $elementArticle_shipping); $this->assign('resetArticle_shipping', $resetArticle_shipping); }
public static function getAddresses() { Tienda::load('TiendaHelperUser', 'helpers.user'); JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/tables'); JModel::addIncludePath(JPATH_SITE . '/components/com_tienda/models'); // get the user's addresses using the address model $model = JModel::getInstance('Addresses', 'TiendaModel'); $model->setState('filter_userid', JRequest::getVar('id', 0, 'request', 'int')); $model->setState('filter_deleted', 0); $userAddresses = $model->getList(); return $userAddresses; }
/** * save a record * @return void */ function save() { $error = false; $errorMsg = ""; $model = $this->getModel($this->get('suffix')); $config = Tienda::getInstance(); $properties = $config->getProperties(); foreach (@$properties as $key => $value) { unset($row); $row = $model->getTable('config'); $newvalue = JRequest::getVar($key, '', 'post', 'string', JREQUEST_ALLOWRAW | JREQUEST_NOTRIM); $value_exists = array_key_exists($key, $_POST); if ($value_exists && !empty($key)) { // proceed if newvalue present in request. prevents overwriting for non-existent values. $row->load(array('config_name' => $key)); $row->config_name = $key; $row->value = $newvalue; if (!$row->save()) { $error = true; $errorMsg .= JText::_('COM_TIENDA_COULD_NOT_STORE') . " {$key} :: " . $row->getError() . " - "; } } } $model->clearCache(); if (!$error) { $this->messagetype = 'message'; $this->message = JText::_('COM_TIENDA_SAVED'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onAfterSave' . $this->get('suffix'), array($row)); } else { $this->messagetype = 'notice'; $this->message = JText::_('COM_TIENDA_SAVE_FAILED') . " - " . $errorMsg; } $redirect = "index.php?option=com_tienda&view=" . $this->get('suffix'); $group = JRequest::getVar('group'); switch ($group) { default: if ($group) { $redirect .= "&task=" . $group; } break; } $format = JRequest::getVar('format'); if ($format == 'raw') { $response = array(); $response['error'] = $error; $response['msg'] = $this->message; echo json_encode($response); return; } $redirect = JRoute::_($redirect, false); $this->setRedirect($redirect, $this->message, $this->messagetype); }
/** * Gets data about which address fields should be visible and validable on a form * * @params $address_type Address type * * @return 2-dimensional associative array with data */ public static function getAddressElementsData($address_type) { $config = Tienda::getInstance(); $address_fields = array('address_name', 'title', 'name', 'middle', 'last', 'address1', 'address2', 'country', 'city', 'zip', 'zone', 'phone', 'company', 'tax_number'); $elements = array(); for ($i = 0, $c = count($address_fields); $i < $c; $i++) { $f = $address_fields[$i]; $show = $config->get('show_field_' . $f, '3'); $valid = $config->get('validate_field_' . $f, '3'); $elements[$f] = array($show == '3' || $show == $address_type, $valid == '3' || $valid == $address_type); } return $elements; }
/** * * @param unknown_type $updateNulls * @return unknown_type */ function store($updateNulls = false) { if ($return = parent::store($updateNulls)) { if ($this->notify_customer == '1') { Tienda::load("TiendaHelperBase", 'helpers._base'); $helper = TiendaHelperBase::getInstance('Email'); $model = Tienda::getClass("TiendaModelSubscriptions", "models.subscriptions"); $model->setId($this->subscription_id); $subscription = $model->getItem(); $helper->sendEmailNotices($subscription, 'subscription'); } } return $return; }
/** * Sets the modules params as a property of the object * @param unknown_type $params * @return unknown_type */ function __construct($params) { $this->params = $params; if (!class_exists('Tienda')) { JLoader::register("Tienda", JPATH_ADMINISTRATOR . "/components/com_tienda/defines.php"); } // load the config class Tienda::load('Tienda', 'defines'); JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/tables'); JModel::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/models'); $this->defines = Tienda::getInstance(); Tienda::load("TiendaHelperRoute", 'helpers.route'); $this->router = new TiendaHelperRoute(); $this->user = JFactory::getUser(); }
/** * * @param unknown_type $updateNulls * @return unknown_type */ function store($updateNulls = false) { if ($return = parent::store($updateNulls)) { if ($this->notify_customer == '1') { Tienda::load("TiendaHelperBase", 'helpers._base'); $helper = TiendaHelperBase::getInstance('Email'); $model = Tienda::getClass("TiendaModelOrders", "models.orders"); $model->setId($this->order_id); // this isn't necessary because you specify the requested PK id as a getItem() argument $order = $model->getItem($this->order_id, true); $helper->sendEmailNotices($order, 'order'); } } return $return; }
function save($src = '', $orderingFilter = '', $ignore = '') { $prev = clone $this; if (!empty($this->id)) { $prev->load($this->id); } if ($save = parent::save($src, $orderingFilter, $ignore)) { if ($prev->subscription_enabled && empty($this->subscription_enabled)) { // if it was previously enabled and now is disabled Tienda::load('TiendaHelperJuga', 'helpers.juga'); $helper = new TiendaHelperJuga(); $helper->doExpiredSubscription($this); } } return $save; }