/** * Gets the language object associated with this object * @return Language - a language object */ function getLanguage() { if ($this->language == null) { $languageMapper = new LanguageMapper(); $this->language = $languageMapper->get($this->getLanguageID()); } return $this->language; }
public function getAllLanguages($request, $db) { // verbosity - here for consistency as we don't have verbose language details to return at the moment $verbose = $this->getVerbosity($request); // pagination settings $start = $this->getStart($request); $resultsperpage = $this->getResultsPerPage($request); $mapper = new LanguageMapper($db, $request); $list = $mapper->getLanguageList($resultsperpage, $start, $verbose); return $list; }
/** * Returns an singleton instance of this class * @return */ public static function getInstance() { if (self::$instance == null) { self::$instance = new LanguageMapper(); } return self::$instance; }
/** * Initializes DB mappers * * @param object $config * @param object $args * @return */ function __construct($config, $args) { $this->mapper = LanguageMapper::getInstance(); $this->config = $config; $this->args = $args; $this->initAllPhrases(); }
set_time_limit(0); ini_set("max_execution_time", 0); require dirname(dirname(__DIR__)) . '/app/Mage.php'; require __DIR__ . '/SimpleProduct.php'; require __DIR__ . '/ConfigurableProduct.php'; require __DIR__ . '/TaxCalculation.php'; require __DIR__ . '/Category.php'; require __DIR__ . '/CsvWriter.php'; require __DIR__ . '/LanguageMapper.php'; $options = getopt(null, ["language:"]); if (empty($options)) { // fallback $options["language"] = "de"; } $skippedProducts = 0; $mapper = new LanguageMapper($options["language"]); $feedFilename = sprintf("%s/Mey_%s_%s.csv", "/opt/productexport", $mapper->getLabel(), date("Y-m-d_H-m-s")); $start = microtime(true); $data = []; $brokenProducts = []; $gc = gc_enabled(); Mage::app()->setCurrentStore(Mage::getModel('core/store')->load($mapper->getStoreId())); $taxCalc = new TaxCalculation(Mage); $open = count($products); $dataWritten = false; $writer = new CsvWriter($feedFilename); $productIds = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('type_id', array('eq' => 'configurable'))->addAttributeToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED))->getAllIds(); $open = count($productIds); foreach ($productIds as $id) { $product = Mage::getModel('catalog/product')->load($id); $websites = $product->getWebsiteIds();
/** * Create a talk * * This method creates a new talk after being called via the URL * "/events/[eventId]/talks" * * @param Request $request * @param PDO $db * * @throws Exception * @return array|bool */ public function createTalkAction(Request $request, PDO $db) { if (!isset($request->user_id)) { throw new Exception("You must be logged in to create data", 400); } $talk['event_id'] = $this->getItemId($request); if (empty($talk['event_id'])) { throw new Exception("POST expects a talk representation sent to a specific event URL", 400); } $event_mapper = new EventMapper($db, $request); $talk_mapper = new TalkMapper($db, $request); $talk_type_mapper = new TalkTypeMapper($db, $request); $is_admin = $event_mapper->thisUserHasAdminOn($talk['event_id']); if (!$is_admin) { throw new Exception("You do not have permission to add talks to this event", 400); } // get the event so we can get the timezone info $list = $event_mapper->getEventById($talk['event_id'], true); if (count($list['events']) == 0) { throw new Exception('Event not found', 404); } $event = $list['events'][0]; $talk['title'] = filter_var($request->getParameter('talk_title'), FILTER_SANITIZE_STRING); if (empty($talk['title'])) { throw new Exception("The talk title field is required", 400); } $talk['description'] = filter_var($request->getParameter('talk_description'), FILTER_SANITIZE_STRING); if (empty($talk['description'])) { throw new Exception("The talk description field is required", 400); } $talk['type'] = filter_var($request->getParameter('type', 'Talk'), FILTER_SANITIZE_STRING); $talk_types = $talk_type_mapper->getTalkTypesLookupList(); if (!array_key_exists($talk['type'], $talk_types)) { throw new Exception("The type '{$talk['type']}' is unknown", 400); } $talk['type_id'] = $talk_types[$talk['type']]; $start_date = filter_var($request->getParameter('start_date'), FILTER_SANITIZE_STRING); if (empty($start_date)) { throw new Exception("Please give the date and time of the talk", 400); } $tz = new DateTimeZone($event['tz_continent'] . '/' . $event['tz_place']); $talk['date'] = (new DateTime($start_date, $tz))->format('U'); $talk['language'] = filter_var($request->getParameter('language'), FILTER_SANITIZE_STRING); if (empty($talk['language'])) { // default to UK English $talk['language'] = 'English - UK'; } // When the language doesn't exist, the talk will not be found $language_mapper = new LanguageMapper($db, $request); if (!$language_mapper->isLanguageValid($talk['language'])) { throw new Exception("The language '{$talk['type']}' is unknown", 400); } $talk['duration'] = filter_var($request->getParameter('duration'), FILTER_SANITIZE_NUMBER_INT); if (empty($talk['duration'])) { $talk['duration'] = 60; } $talk['slides_link'] = filter_var($request->getParameter('slides_link'), FILTER_SANITIZE_URL); $talk['speakers'] = array_map(function ($speaker) { $speaker = filter_var($speaker, FILTER_SANITIZE_STRING); $speaker = trim($speaker); return $speaker; }, (array) $request->getParameter('speakers')); $new_id = $talk_mapper->createTalk($talk); // Update the cache count for the number of talks at this event $event_mapper->cacheTalkCount($talk['event_id']); $uri = $request->base . '/' . $request->version . '/talks/' . $new_id; header("Location: " . $uri, true, 201); $new_talk = $talk_mapper->getTalkById($new_id); return $new_talk; }
/** * Finds an attribute by its name * @param $name String - attribute key name * @param $language Language - Optional, if not given, the main language is used * @return ObjectAttribute - ObjectAttribute or null, if it couldn't be found */ function findAttributeByName($name, $language = null) { if (is_null($language)) { $languageMapper = new LanguageMapper(); $language = $languageMapper->getMain(); } $objectAttributeArray = $this->getAttributes(); foreach ($objectAttributeArray as $objectAttribute) { /* @var $objectAttribute ObjectAttribute */ $classAttribute = $objectAttribute->getClassAttribute(); /* @var $classAttribute ClassAttribute */ if ($objectAttribute->getLanguageID() == $language->getId() && $classAttribute->getName() == $name) { return $objectAttribute; } } // Couldn't find it return null; }
/** * Initializes DB mappers */ function __construct() { $this->mapper = LanguageMapper::getInstance(); $this->initAllPhrases(); }
/** * Read the talk fields from the request body and validate and return an * array ready for saving to the database. * * This is common for createTalk() and editTalk(). * * @param PDO $db * @param Request $request * @param int $event_id * * @return array */ protected function getTalkDataFromRequest(PDO $db, Request $request, $event_id) { // get the event so we can get the timezone info & it $event_mapper = new EventMapper($db, $request); $list = $event_mapper->getEventById($event_id, true); if (count($list['events']) == 0) { throw new Exception('Event not found', 404); } $event = $list['events'][0]; $talk['title'] = filter_var($request->getParameter('talk_title'), FILTER_SANITIZE_STRING); if (empty($talk['title'])) { throw new Exception("The talk title field is required", 400); } $talk['description'] = filter_var($request->getParameter('talk_description'), FILTER_SANITIZE_STRING); if (empty($talk['description'])) { throw new Exception("The talk description field is required", 400); } $talk['type'] = filter_var($request->getParameter('type', 'Talk'), FILTER_SANITIZE_STRING); $talk_type_mapper = new TalkTypeMapper($db, $request); $talk_types = $talk_type_mapper->getTalkTypesLookupList(); if (!array_key_exists($talk['type'], $talk_types)) { throw new Exception("The type '{$talk['type']}' is unknown", 400); } $talk['type_id'] = $talk_types[$talk['type']]; $start_date = filter_var($request->getParameter('start_date'), FILTER_SANITIZE_STRING); if (empty($start_date)) { throw new Exception("Please give the date and time of the talk", 400); } $tz = new DateTimeZone($event['tz_continent'] . '/' . $event['tz_place']); $talk['date'] = (new DateTime($start_date, $tz))->format('U'); $event_start_date = (new DateTime($event['start_date']))->format('U'); $event_end_date = (new DateTime($event['end_date']))->add(new DateInterval('P1D'))->format('U'); if ($talk['date'] < $event_start_date || $talk['date'] >= $event_end_date) { throw new Exception("The talk must be held between the start and end date of the event", 400); } $talk['language'] = filter_var($request->getParameter('language'), FILTER_SANITIZE_STRING); if (empty($talk['language'])) { // default to UK English $talk['language'] = 'English - UK'; } // When the language doesn't exist, the talk will not be found $language_mapper = new LanguageMapper($db, $request); if (!$language_mapper->isLanguageValid($talk['language'])) { throw new Exception("The language '{$talk['type']}' is unknown", 400); } $talk['duration'] = filter_var($request->getParameter('duration'), FILTER_SANITIZE_NUMBER_INT); if (empty($talk['duration'])) { $talk['duration'] = 60; } $talk['slides_link'] = filter_var($request->getParameter('slides_link'), FILTER_SANITIZE_URL); $talk['speakers'] = array_map(function ($speaker) { $speaker = filter_var($speaker, FILTER_SANITIZE_STRING); $speaker = trim($speaker); return $speaker; }, (array) $request->getParameter('speakers')); return $talk; }
/** * Constructs an "frontLanguage" array, a mere structure for the Add / Update View that is just an array * of another array. The structure is as follows: * * frontLanguageArray[X] = * [0] = Lanugage Object * [1] = FrontAttribute Objects array * * So, you get all attributes for each language object to display * * @param $object Object - If specified, attribute values assigned to the object are extracted and filled in the FrontAttribute * @return array - the "FrontLanguage" array */ function constructFrontLanguageArray($object = null) { // Set all data needed // Takes all attributes for the class and for each language $languageMapper = new LanguageMapper(); $languageArray = $languageMapper->getAll(); // Generate FrontAttributes $frontLanguageArray = array(); foreach ($languageArray as $language) { $attributeArray = $this->class->getAttributesForLanguage($language); $frontAttributeArray = array(); foreach ($attributeArray as $classAttribute) { $variant = null; // Crossroad -> if the object was given, try to extract the ObjectAttribute if ($object != null) { $variant = $object->getAttributeForLanguage($classAttribute->getId(), $language->getId()); } // If the object was not received, or the object doesn't have this attribute assigned, use the basic attribute if ($variant == null) { $variant = $classAttribute; } $frontAttribute = FrontAttributeFactory::newInstance($language, $variant); array_push($frontAttributeArray, $frontAttribute); } $languageObject = array(0 => $language, 1 => $frontAttributeArray); array_push($frontLanguageArray, $languageObject); } return $frontLanguageArray; }
/** * Gets the ClassAttribute objects assigned in the descriptor as fields. If there is no description, TITLE is looked up * @return Array - array of ClassAttribute objects */ function getTitleClassAttributes() { $languageMapper = new LanguageMapper(); $language = $languageMapper->getMain(); $classAttributeArray = $this->getAttributesForLanguage($language); // If it has no descriptor, search for a TITLE attribute if ($this->getDescriptor() == null || $this->getDescriptor() == "") { foreach ($classAttributeArray as $classAttribute) { /* @var $classAttribute ClassAttribute */ if ($classAttribute->getName() == "TITLE") { return $classAttribute; } } trigger_error("Class has no descriptor defined and no TITLE attribute: " . $this->getTitle()); } // Has a descriptor, get its title properties $descriptor = $this->getDescriptor(); $titleArray = array(); while (ereg("<[A-Z]*>", $descriptor, $tempTitleArray) != false) { array_push($titleArray, $tempTitleArray[0]); $descriptor = str_replace($tempTitleArray[0], "", $descriptor); } if ($titleArray == null || count($titleArray) == 0) { trigger_error("Class do not has a valid title defined: " . $this->getDescriptor()); } $titleClassAttributeArray = array(); foreach ($titleArray as $title) { $titleNoTags = str_replace(">", "", str_replace("<", "", $title)); $found = false; foreach ($classAttributeArray as $classAttribute) { if ($classAttribute->getName() == $titleNoTags) { array_push($titleClassAttributeArray, $classAttribute); $found = true; break; } } if ($found == false) { trigger_error("Could not found ClassAttribute " . $titleNoTags); } } return $titleClassAttributeArray; }