コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 /**
  * Returns an singleton instance of this class
  * @return
  */
 public static function getInstance()
 {
     if (self::$instance == null) {
         self::$instance = new LanguageMapper();
     }
     return self::$instance;
 }
コード例 #4
0
 /**
  * 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();
 }
コード例 #5
0
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();
コード例 #6
0
 /**
  * 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;
 }
コード例 #7
0
ファイル: object.php プロジェクト: BackupTheBerlios/icf-svn
 /**
  * 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;
 }
コード例 #8
0
 /**
  * Initializes DB mappers
  */
 function __construct()
 {
     $this->mapper = LanguageMapper::getInstance();
     $this->initAllPhrases();
 }
コード例 #9
0
 /**
  * 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;
 }
コード例 #10
0
 /**
  * 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;
 }
コード例 #11
0
 /**
  * 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;
 }