コード例 #1
0
 public function index()
 {
     // get filter to select manufacturers of active products only
     $rootCat = Category::getRootNode();
     $f = new ARSelectFilter();
     $productFilter = new ProductFilter($rootCat, $f);
     $ids = $counts = array();
     foreach (ActiveRecordModel::getDataBySQL('SELECT DISTINCT(manufacturerID), COUNT(*) AS cnt FROM Product ' . $f->createString() . ' GROUP BY manufacturerID') as $row) {
         $ids[] = $row['manufacturerID'];
         $counts[$row['manufacturerID']] = $row['cnt'];
     }
     $f = new ARSelectFilter(new InCond(new ARFieldHandle('Manufacturer', 'ID'), $ids));
     $f->mergeCondition(new NotEqualsCond(new ARFieldHandle('Manufacturer', 'name'), ''));
     $f->setOrder(new ARFieldHandle('Manufacturer', 'name'));
     $manufacturers = ActiveRecordModel::getRecordSetArray('Manufacturer', $f);
     foreach ($manufacturers as &$manufacturer) {
         $manufacturer['url'] = $this->getManufacturerFilterUrl($manufacturer);
     }
     $this->addBreadCrumb($this->translate('_manufacturers'), '');
     $response = new ActionResponse();
     $response->setReference('manufacturers', $manufacturers);
     $response->set('counts', $counts);
     $response->set('rootCat', $rootCat->toArray());
     return $response;
 }
コード例 #2
0
 public function edit()
 {
     $newsletter = ActiveRecordModel::getInstanceById('NewsletterMessage', $this->request->get('id'), ActiveRecordModel::LOAD_DATA);
     $form = $this->getForm();
     $form->setData($newsletter->toArray());
     $form->set('users', 1);
     $form->set('subscribers', 1);
     $response = new ActionResponse('form', $form);
     $groupsArray = array_merge(ActiveRecord::getRecordSetArray('UserGroup', select()), array(array('ID' => null, 'name' => $this->translate('Customers'))));
     usort($groupsArray, array($this, 'sortGroups'));
     $response->set('groupsArray', $groupsArray);
     $newsletterArray = $newsletter->toArray();
     $text = strlen($newsletterArray['text']);
     $html = strlen($newsletterArray['html']);
     if ($text && $html) {
         $newsletterArray['format'] = self::FORMAT_HTML_TEXT;
     } else {
         if ($text) {
             $newsletterArray['format'] = self::FORMAT_TEXT;
         } else {
             if ($html) {
                 $newsletterArray['format'] = self::FORMAT_HTML;
             }
         }
     }
     $response->set('newsletter', $newsletterArray);
     $response->set('sentCount', $newsletter->getSentCount());
     $response->set('recipientCount', $this->getRecipientCount($form->getData()));
     return $response;
 }
コード例 #3
0
 public function lastViewed()
 {
     $response = new ActionResponse();
     $response->set('randomToken', substr(md5(time() . mt_rand(1, 9999999999)), 0, 8));
     $response->set('lastViewed', BackendToolbarItem::sanitizeItemArray(BackendToolbarItem::getUserToolbarItems(array(BackendToolbarItem::TYPE_PRODUCT, BackendToolbarItem::TYPE_USER, BackendToolbarItem::TYPE_ORDER), null, 'DESC')));
     return $response;
 }
コード例 #4
0
ファイル: UpdateController.php プロジェクト: saiber/www
 /**
  *  Handles LiveCart update process
  */
 public function update()
 {
     $dir = ClassLoader::getRealPath('update') . '/' . $this->getCurrentVersion();
     if (!is_dir($dir)) {
         return new RawResponse('Update directory not found');
     }
     $progress = array();
     $errors = array();
     // load SQL dump file
     $sql = $dir . '/update.sql';
     if (file_exists($sql)) {
         try {
             Installer::loadDatabaseDump(file_get_contents($sql), true, $this->request->get('force'));
             $progress['sql'] = true;
         } catch (Exception $e) {
             $errors['sql'] = $e->getMessage();
         }
     }
     $this->application->getConfigContainer()->clearCache();
     // execute custom update code
     $code = $dir . '/custom.php';
     if (file_exists($code)) {
         ob_start();
         if (!(include $code)) {
             $errors['code'] = ob_get_contents();
         } else {
             $progress['code'] = true;
         }
         ob_end_clean();
     }
     $response = new ActionResponse();
     $response->set('progress', $progress);
     $response->set('errors', $errors);
     return $response;
 }
コード例 #5
0
ファイル: CustomizeController.php プロジェクト: saiber/www
 public function index()
 {
     $response = new ActionResponse();
     $response->set('isCustomizationModeEnabled', $this->application->isCustomizationMode());
     $response->set('isTranslationModeEnabled', $this->application->isTranslationMode());
     return $response;
 }
コード例 #6
0
ファイル: ErrController.php プロジェクト: saiber/www
 public function index()
 {
     $response = new ActionResponse();
     $response->set('id', $this->request->get('id'));
     $response->set('ajax', $this->request->get('ajax'));
     $response->set('description', HTTPStatusException::getCodeMeaning($this->request->get('id')));
     return $response;
 }
コード例 #7
0
 public function index()
 {
     $response = new ActionResponse();
     $response->set('form', $this->getForm());
     $response->set('carts', $this->getDrivers());
     $response->set('dbTypes', array('mysql' => 'MySQL'));
     $response->set('recordTypes', LiveCartImporter::getRecordTypes());
     return $response;
 }
コード例 #8
0
 public function index()
 {
     $category = Category::getInstanceByID($this->request->get('id'), Category::LOAD_DATA);
     $types = ProductRatingType::getCategoryRatingTypes($category)->toArray();
     $response = new ActionResponse('typeList', $types);
     $response->set('form', $this->buildForm());
     $response->set('id', $this->request->get('id'));
     return $response;
 }
コード例 #9
0
 public function edit()
 {
     $group = UserGroup::getInstanceByID((int) $this->request->get('id'), true);
     $form = $this->createUserGroupForm($group);
     $response = new ActionResponse();
     $response->set('userGroup', $group->toArray());
     $response->set('userGroupForm', $form);
     $group->getSpecification()->setFormResponse($response, $form);
     return $response;
 }
コード例 #10
0
ファイル: TaxController.php プロジェクト: saiber/www
 public function edit()
 {
     $tax = Tax::getInstanceByID((int) $this->request->get('id'), true);
     $form = $this->createTaxForm($tax);
     $form->setData($tax->toArray());
     $response = new ActionResponse();
     $response->set('tax', $tax->toArray());
     $response->set('taxForm', $form);
     return $this->appendTaxRates($response, $tax->getID());
 }
コード例 #11
0
 public function edit()
 {
     $class = ShippingClass::getInstanceByID((int) $this->request->get('id'), true);
     $form = $this->createClassForm($class);
     $form->setData($class->toArray());
     $response = new ActionResponse();
     $response->set('class', $class->toArray());
     $response->set('classForm', $form);
     return $response;
 }
コード例 #12
0
 /**
  * Specification field index page
  *
  * @return ActionResponse
  */
 public function index()
 {
     $categoryID = $this->request->get('id');
     $defaultSpecFieldValues = array('ID' => $categoryID . '_new', 'name' => array(), 'description' => array(), 'handle' => '', 'values' => array(), 'rootId' => 'specField_item_new_' . $categoryID . '_form', 'type' => EavFieldCommon::TYPE_TEXT_SIMPLE, 'dataType' => EavFieldCommon::DATATYPE_TEXT, 'categoryID' => $categoryID, 'isDisplayed' => true);
     $response = new ActionResponse();
     $response->set('categoryID', $categoryID);
     $response->set('configuration', $this->getSpecFieldConfig());
     $response->set('specFieldsList', $defaultSpecFieldValues);
     $response->set('specFieldsWithGroups', $this->getParent($categoryID)->getSpecFieldsWithGroupsArray());
     return $response;
 }
コード例 #13
0
 public function index()
 {
     $productID = (int) $this->request->get('id');
     $product = Product::getInstanceByID($productID, ActiveRecord::LOAD_DATA);
     $response = new ActionResponse();
     $response->set('ownerID', $productID);
     $response->set('categoryID', $product->category->get()->getID());
     $response->set('items', ProductBundle::getBundledProductArray($product));
     $currency = $this->application->getDefaultCurrency();
     $response->set('total', $currency->getFormattedPrice(ProductBundle::getTotalBundlePrice($product, $currency)));
     return $response;
 }
コード例 #14
0
 public function index()
 {
     $f = new ARSelectFilter();
     $f->setOrder(new ARFieldHandle('EyeExamSchedule', 'doctorName'), 'ASC');
     $f->setOrder(new ARFieldHandle('EyeExamSchedule', 'date'), 'DESC');
     $f->setOrder(new ARFieldHandle('EyeExamSchedule', 'time'), 'ASC');
     $arrEyeSchedule = ActiveRecordModel::getRecordSetArray('EyeExamSchedule', $f);
     $response = new ActionResponse('eyeExamList', self::loadFormattedReferences($arrEyeSchedule));
     $response->set('form', $this->buildForm());
     $curDate = date("Y-m-d");
     $response->set('curDate', $curDate);
     return $response;
 }
コード例 #15
0
 public function edit()
 {
     $this->loadLanguageFile('backend/Product');
     $rpp = RecurringProductPeriod::getInstanceByID((int) $this->request->get('id'), ActiveRecord::LOAD_DATA);
     $rpp = $rpp->toArray();
     $form = $this->createForm($rpp);
     $response = new ActionResponse();
     $response->set('recurringProductPeriod', $rpp);
     $response->set('form', $form);
     $response->set('periodTypes', array_map(array($this, 'translate'), RecurringProductPeriod::getAllPeriodTypes(RecurringProductPeriod::PERIOD_TYPE_NAME_PLURAL)));
     $response->set('currencies', $this->application->getCurrencyArray(true));
     return $response;
 }
コード例 #16
0
ファイル: FilterGroupController.php プロジェクト: saiber/www
 /**
  * Filters group index page
  *
  * @return ActionResponse
  */
 public function index()
 {
     $response = new ActionResponse();
     $categoryID = (int) $this->request->get('id');
     $category = Category::getInstanceByID($categoryID);
     $specFieldsList = $category->getSpecificationFieldSet();
     $blankFilter = array('ID' => $categoryID . '_new', 'name' => array(), 'rootId' => 'filter_item_new_' . $categoryID . '_form', 'categoryID' => $categoryID, 'specFields' => $this->getSpecFieldOptions($category->getSpecificationFieldArray()));
     $response->set('filters', $this->createFiltersInGroupsCountArray($category->getFilterGroupSet()));
     $response->set('blankFilter', $blankFilter);
     $response->set('categoryID', $categoryID);
     $response->set('configuration', $this->getConfig());
     $response->set('defaultLangCode', $this->application->getDefaultLanguageCode());
     return $response;
 }
コード例 #17
0
ファイル: SettingsController.php プロジェクト: saiber/www
 /**
  * Individual settings section
  */
 public function edit()
 {
     $this->config->updateSettings();
     $defLang = $this->application->getDefaultLanguageCode();
     $languages = $this->application->getLanguageArray(LiveCart::INCLUDE_DEFAULT);
     $sectionId = $this->request->get('id');
     $values = $this->config->getSettingsBySection($sectionId);
     $validation = $this->getValidationRules($values);
     $form = $this->getForm($values, $validation);
     $types = $multiLingualValues = array();
     if (!$values) {
         return new RawResponse();
     }
     foreach ($values as $key => $value) {
         if ($this->config->isMultiLingual($key) && 'string' == $value['type'] || 'longtext' == $value['type']) {
             foreach ($languages as $lang) {
                 $form->set($key . ($lang != $defLang ? '_' . $lang : ''), $this->config->getValueByLang($key, $lang));
             }
             $multiLingualValues[$key] = true;
         } else {
             $form->set($key, $this->config->get($key));
         }
         $types[$key] = $value['type'];
     }
     $response = new ActionResponse();
     $response->set('form', $form);
     $response->set('title', $this->translate($this->config->getSectionTitle($sectionId)));
     $response->set('values', $values);
     $response->set('types', $types);
     $response->set('id', $sectionId);
     $response->set('sectionKey', array_pop(explode('.', $sectionId)));
     $response->set('layout', $this->config->getSectionLayout($sectionId));
     $response->set('multiLingualValues', $multiLingualValues);
     return $response;
 }
コード例 #18
0
ファイル: SelectFileController.php プロジェクト: saiber/www
 public function index()
 {
     $dir = getcwd();
     @chdir('/');
     $root = array('parent' => 0, 'ID' => getcwd(), 'name' => getcwd(), 'childrenCount' => 22);
     $response = new ActionResponse();
     $response->set('directoryList', $this->getSubDirectories(getcwd()));
     $response->set('root', array(0 => $root));
     $response->set('current', $dir);
     $this->setGridResponse($response);
     $response->set('offset', 0);
     $response->set('data', '');
     //print_r($response->getData());
     return $response;
 }
コード例 #19
0
ファイル: ThemeFileController.php プロジェクト: saiber/www
 public function upload()
 {
     $request = $this->getRequest();
     $theme = $request->get('theme');
     $tfh = ThemeFile::getNewInstance($request->get('theme'));
     $res = $tfh->processFileUpload('file', $request->get('filename'), $request->get('orginalFileName'));
     $this->setLayout('iframeJs');
     $response = new ActionResponse();
     $response->set('theme', $theme);
     $response->set('result', json_encode($tfh->getFiles()));
     if (is_array($res)) {
         $response->set('highlightFileName', $res['filename']);
     }
     return $response;
 }
コード例 #20
0
 public function lastViewed()
 {
     $request = $this->getRequest();
     $where = $request->get('where');
     $response = new ActionResponse();
     $response->set('randomToken', substr(md5(time() . mt_rand(1, 9999999999)), 0, 8));
     $response->set('where', $where);
     $lastViewed = BackendToolbarItem::sanitizeItemArray(BackendToolbarItem::getUserToolbarItems(array(BackendToolbarItem::TYPE_PRODUCT, BackendToolbarItem::TYPE_USER, BackendToolbarItem::TYPE_ORDER), null, 'DESC'));
     $itemsByType = array();
     foreach ($lastViewed as $item) {
         $itemsByType[$item['type']][] = $item;
     }
     $response->set('itemsByType', $itemsByType);
     return $response;
 }
コード例 #21
0
 /**
  *	Main settings page
  */
 public function index()
 {
     $f = new ARSelectFilter();
     $f->setOrder(new ARFieldHandle('StaticPage', 'position'));
     $f->setOrder(new ARFieldHandle('StaticPage', 'parentID'));
     $s = ActiveRecordModel::getRecordSetArray('StaticPage', $f);
     $pages = array();
     foreach ($s as $page) {
         $pointers[$page['ID']] = array('title' => $page['title_lang'], 'id' => $page['ID'], 'parentID' => $page['parentID']);
     }
     foreach ($pointers as $page) {
         if ($page['parentID'] && !empty($pointers[$page['parentID']])) {
             $root =& $pointers[$page['parentID']];
         } else {
             $root =& $pages;
         }
         $root['children'][] =& $pointers[$page['id']];
     }
     $response = new ActionResponse();
     $response->set('pages', json_encode($pages));
     $form = $this->getForm();
     $page = StaticPage::getNewInstance();
     $page->getSpecification()->setFormResponse($response, $form);
     $response->set('form', $form);
     $response->set('page', $page->toArray());
     return $response;
 }
コード例 #22
0
 /**
  * Creates new relationship
  *
  * @role update
  */
 public function add()
 {
     $productID = $this->request->get('relatedownerID');
     $ownerID = $this->request->get('id');
     $list = ActiveRecordModel::getInstanceById('ProductList', $ownerID, ActiveRecordModel::LOAD_DATA);
     $product = Product::getInstanceByID($productID, Product::LOAD_DATA, array('ProductImage'));
     if (!$list->contains($product)) {
         $list->addProduct($product);
         $response = new ActionResponse();
         $response->set('product', $product->toArray());
         $response->set('added', true);
         return $response;
     } else {
         return new JSONResponse(array('error' => $this->translate('_err_multiple')));
     }
 }
コード例 #23
0
 public function index()
 {
     $order = CustomerOrder::getInstanceById($this->request->get('id'));
     $notes = $order->getNotes();
     foreach ($notes as $note) {
         if (!$note->isRead->get() && !$note->isAdmin->get()) {
             $note->isRead->set(true);
             $note->save();
         }
     }
     $response = new ActionResponse();
     $response->set('form', $this->buildOrderNoteForm());
     $response->set('order', $order->toArray());
     $response->set('notes', $notes->toArray());
     return $response;
 }
コード例 #24
0
ファイル: SessionController.php プロジェクト: saiber/livecart
 public function index()
 {
     $this->loadLanguageFile('User');
     $response = new ActionResponse('email', $this->request->get('email'));
     $response->setHeader('NeedLogin', 1);
     $response->set('return', $this->request->get('return'));
     return $response;
 }
コード例 #25
0
 public function index()
 {
     $f = new ARSelectFilter();
     $f->setOrder(new ARFieldHandle('NewsPost', 'position'), 'DESC');
     $response = new ActionResponse('newsList', ActiveRecordModel::getRecordSetArray('NewsPost', $f));
     $response->set('form', $this->buildForm());
     return $response;
 }
コード例 #26
0
 /**
  * Displays category form (for creating a new category or modifying an existing one)
  *
  * @role !category
  *
  * @return ActionResponse
  */
 public function form()
 {
     ClassLoader::import('application.LiveCartRenderer');
     ClassLoader::import('application.model.presentation.CategoryPresentation');
     $this->loadLanguageFile('backend/Settings');
     $category = Category::getRootNode();
     $form = $this->buildForm($category);
     $response = new ActionResponse("catalogForm", $form);
     $response->set('themes', array_merge(array(''), LiveCartRenderer::getThemeList()));
     $listStyles = array();
     foreach (array('LIST', 'GRID', 'TABLE') as $style) {
         $listStyles[$style] = $this->translate($style);
     }
     $response->set('listStyles', array_merge(array(''), $listStyles));
     $category->getSpecification()->setFormResponse($response, $form);
     return $response;
 }
コード例 #27
0
ファイル: ReviewController.php プロジェクト: saiber/livecart
 public function edit()
 {
     $review = ActiveRecordModel::getInstanceById('ProductReview', $this->request->get('id'), ProductReview::LOAD_DATA, array('Product'));
     //$manufacturer->getSpecification();
     $response = new ActionResponse('review', $review->toArray());
     $form = $this->buildForm($review);
     $form->setData($review->toArray());
     // get ratings
     foreach ($review->getRelatedRecordSetArray('ProductRating', new ARSelectFilter()) as $rating) {
         $form->set('rating_' . $rating['ratingTypeID'], $rating['rating']);
     }
     $form->set('rating_', $review->rating->get());
     //$manufacturer->getSpecification()->setFormResponse($response, $form);
     $response->set('form', $form);
     $response->set('ratingTypes', ProductRatingType::getProductRatingTypes($review->product->get())->toArray());
     $options = range(1, $this->config->get('RATING_SCALE'));
     $response->set('ratingOptions', array_combine($options, $options));
     return $response;
 }
コード例 #28
0
ファイル: SearchController.php プロジェクト: saiber/livecart
 public function index()
 {
     $this->loadLanguageFile('Category');
     $inst = SearchableModel::getInstanceByModelClass($this->request->get('type'));
     if (!$inst) {
         return null;
     }
     $query = $this->request->get('q');
     $f = $inst->getSelectFilter($query);
     $perPage = $this->config->get('SEARCH_MODEL_PER_PAGE');
     $page = $this->request->get('page', 1);
     $f->setLimit($perPage, $perPage * ($page - 1));
     $response = new ActionResponse();
     $response->set('results', $this->fetchData($inst, $f));
     $response->set('page', $page);
     $response->set('query', $query);
     $response->set('perPage', $perPage);
     $response->set('url', $this->router->createUrl(array('controller' => 'search', 'action' => 'index', 'query' => array('type' => $inst->getClassName(), 'q' => $query, 'page' => '0'))));
     return $response;
 }
コード例 #29
0
ファイル: IndexController.php プロジェクト: saiber/www
 public function index()
 {
     $this->loadLanguageFile('backend/abstract/ActiveGridQuickEdit');
     $this->updateApplicationUri();
     // order stats
     $conditions = array('last' => new EqualsOrMoreCond(new ARFieldHandle('CustomerOrder', 'dateCompleted'), time() - 86400), 'new' => new IsNullCond(new ARFieldHandle('CustomerOrder', 'status')), 'processing' => new EqualsCond(new ARFieldHandle('CustomerOrder', 'status'), CustomerOrder::STATUS_PROCESSING), 'total' => new EqualsCond(new ARFieldHandle('CustomerOrder', 'isFinalized'), true));
     foreach ($conditions as $key => $cond) {
         $f = new ARSelectFilter($cond);
         $f->mergeCondition(new EqualsCond(new ARFieldHandle('CustomerOrder', 'isFinalized'), true));
         $f->mergeCondition(new EqualsCond(new ARFieldHandle('CustomerOrder', 'isCancelled'), false));
         $orderCount[$key] = ActiveRecordModel::getRecordCount('CustomerOrder', $f);
     }
     // messages
     $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle('OrderNote', 'isAdmin'), 0));
     $f->mergeCondition(new EqualsCond(new ARFieldHandle('OrderNote', 'isRead'), 0));
     $orderCount['messages'] = ActiveRecordModel::getRecordCount('OrderNote', $f);
     // inventory stats
     $lowStock = new EqualsOrLessCond(new ARFieldHandle('Product', 'stockCount'), $this->config->get('LOW_STOCK'));
     $lowStock->addAnd(new MoreThanCond(new ARFieldHandle('Product', 'stockCount'), 0));
     $conditions = array('lowStock' => $lowStock, 'outOfStock' => new EqualsOrLessCond(new ARFieldHandle('Product', 'stockCount'), 0));
     foreach ($conditions as $key => $cond) {
         $cond->addAnd(new EqualsCond(new ARFieldHandle('Product', 'isEnabled'), true));
         $inventoryCount[$key] = ActiveRecordModel::getRecordCount('Product', new ARSelectFilter($cond));
     }
     // overall stats
     $rootCat = Category::getRootNode();
     $rootCat->load();
     $response = new ActionResponse();
     $response->set('orderCount', $orderCount);
     $response->set('inventoryCount', $inventoryCount);
     $response->set('rootCat', $rootCat->toArray());
     $response->set('thisMonth', date('m'));
     $response->set('lastMonth', date('Y-m', strtotime(date('m') . '/15 -1 month')));
     $response->set('ordersLast24', $this->getOrderCount('-24 hours', 'now'));
     $response->set('ordersThisWeek', $this->getOrderCount('w:Monday', 'now'));
     $response->set('ordersThisMonth', $this->getOrderCount(date('m') . '/1', 'now'));
     $response->set('ordersLastMonth', $this->getOrderCount($response->get('lastMonth') . '-1', date('m') . '/1'));
     $response->set('lastOrders', $this->getLastOrders());
     return $response;
 }
コード例 #30
0
 public function index()
 {
     if (($zoneID = (int) $this->request->get('id')) <= 0) {
         $deliveryZoneArray = array('ID' => '');
         $shippingServices = ShippingService::getByDeliveryZone();
     } else {
         $deliveryZone = DeliveryZone::getInstanceByID($zoneID, true);
         $deliveryZoneArray = $deliveryZone->toArray();
         $shippingServices = $deliveryZone->getShippingServices();
     }
     $shippingServicesArray = array();
     foreach ($shippingServices as $service) {
         $shippingServicesArray[$service->getID()] = $service->toArray();
         $shippingServicesArray[$service->getID()]['rangeTypeString'] = $this->translate($service->rangeType->get() == 0 ? '_weight_based_rates' : '_subtotal_based_rates');
         $shippingServicesArray[$service->getID()]['ratesCount'] = $service->getRates()->getTotalRecordCount();
     }
     $form = $this->createShippingServiceForm();
     $form->setData(array('rangeType' => 0));
     $response = new ActionResponse();
     $response->set('shippingServices', $shippingServicesArray);
     $response->set('newService', array('DeliveryZone' => $deliveryZoneArray));
     $response->set('newRate', array('ShippingService' => array('DeliveryZone' => $deliveryZoneArray, 'ID' => '')));
     $response->set('deliveryZone', $deliveryZoneArray);
     $response->set('defaultCurrencyCode', $this->application->getDefaultCurrency()->getID());
     $response->set('form', $form);
     return $response;
 }