Example #1
0
 /**
  * Get a singleton instance of a class in the most convenient language (@see choose_site_lang())
  *
  * @param string $callerClass The name of the class
  * @param string $filter A filter to be inserted into the WHERE clause.
  * @param boolean $cache Use caching (default: false)
  * @param string $orderby A sort expression to be inserted into the ORDER BY clause.
  * @return DataObject
  */
 static function get_one($callerClass, $filter = "", $cache = false, $orderby = "")
 {
     self::$language_decided = true;
     self::$reading_lang = self::default_lang();
     $record = DataObject::get_one($callerClass, $filter);
     if (!$record) {
         self::$bypass = true;
         $record = DataObject::get_one($callerClass, $filter, $cache, $orderby);
         self::$bypass = false;
         if ($record) {
             self::set_reading_lang($record->Lang);
         }
     } else {
         $langsAvailable = (array) self::get_langs_by_id($callerClass, $record->ID);
         $langsAvailable[] = self::default_lang();
         $lang = self::choose_site_lang($langsAvailable);
         if (isset($lang)) {
             $transrecord = self::get_one_by_lang($callerClass, $lang, "`{$callerClass}`.ID = {$record->ID}");
             if ($transrecord) {
                 self::set_reading_lang($lang);
                 $record = $transrecord;
             }
         }
     }
     return $record;
 }