Beispiel #1
0
 /**
  * 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);
 }
Beispiel #2
0
 /**
  * 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);
     }
 }
Beispiel #3
0
 /**
  * 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;
 }
Beispiel #4
0
 /**
  * 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;
 }
Beispiel #5
0
    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;
 }
Beispiel #7
0
 /**
  * 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);
         }
     }
 }
Beispiel #8
0
 /**
  *
  * @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;
 }
Beispiel #9
0
 /**
  * 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;
 }
Beispiel #10
0
 /**
  * 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;
 }
Beispiel #11
0
 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();
 }
Beispiel #12
0
 /**
  * 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;
 }
Beispiel #13
0
 /**
  * 
  * @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;
 }
Beispiel #14
0
    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;
    }
Beispiel #15
0
 /**
  * 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;
 }
Beispiel #16
0
 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);
 }
Beispiel #17
0
 public function __construct($config = array())
 {
     parent::__construct($config);
     $this->defines = Tienda::getInstance();
     if (JDEBUG) {
         $this->cache_enabled = false;
     }
 }
Beispiel #18
0
 function __construct($config = array())
 {
     parent::__construct($config);
     $this->defines = Tienda::getInstance();
     Tienda::load("TiendaHelperRoute", 'helpers.route');
     $this->router = new TiendaHelperRoute();
     $this->user = JFactory::getUser();
 }
Beispiel #19
0
 /**
  * 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');
     }
 }
Beispiel #20
0
 function __construct($config = array())
 {
     parent::__construct($config);
     if (empty($this->helpers)) {
         $this->helpers = array();
     }
     Tienda::load("TiendaHelperProduct", 'helpers.product');
     $this->helpers['product'] = new TiendaHelperProduct();
 }
Beispiel #21
0
 /**
  * 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;
 }
Beispiel #23
0
 /**
  * 
  * @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);
 }
Beispiel #24
0
 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;
 }
Beispiel #25
0
 /**
  * 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);
 }
Beispiel #26
0
 /**
  * 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;
 }
Beispiel #27
0
 /**
  * 
  * @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;
 }
Beispiel #28
0
 /**
  * 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();
 }
Beispiel #29
0
 /**
  * 
  * @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;
 }
Beispiel #30
0
 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;
 }