예제 #1
0
파일: T.php 프로젝트: demental/m
 public static function &getInstance($lang = null)
 {
     if (is_null($lang)) {
         $lang = T::getLang();
     }
     if (empty($lang)) {
         $lang = Config::get('defaultLang');
     }
     if (key_exists($lang, T::$instances)) {
         return T::$instances[$lang];
     } else {
         $driver = T::getConfig('driver');
         if (empty($driver)) {
             $driver = 'reader';
         }
         $className = 'T_' . $driver;
         $t = new $className();
         $t->init($lang);
         T::addInstance($t, $lang);
         return $t;
     }
 }
예제 #2
0
파일: Util.php 프로젝트: demental/m
 public static function &getSearchForm($do, $module)
 {
     MyQuickForm::registerElementType('advandate', 'HTML/QuickForm/advandate.php', 'HTML_QuickForm_advandate');
     $form = new MyQuickForm('formSearch', 'GET', self::getQueryParams(array(), array('page', '_c_'), false));
     $fields = $_GET;
     unset($fields['_c_']);
     unset($fields['page']);
     unset($fields['module']);
     unset($fields['action']);
     unset($fields['filterField']);
     unset($fields['filterValue']);
     if (count($fields) == 0) {
         Log::info('caching search form');
         $cache = true;
     } else {
         Log::info('NO SEARCH FORM CACHING');
         $cache = false;
     }
     $cacheName = 'searchform_' . $module;
     $options = array('caching' => $cache, 'cacheDir' => APP_ROOT . 'app/' . APP_NAME . '/cache/forms/', 'lifeTime' => 3600, 'fileNameProtection' => false);
     $cache = new Cache_Lite($options);
     if ($_cachedData = $cache->get($cacheName)) {
         Mreg::append('autoloadcallback', array(array('MyQuickForm', 'autoloadElements')));
         $_cachedData = unserialize($_cachedData);
         foreach ($_cachedData as $element) {
             $form->addElement($element);
         }
     } else {
         $do->fb_selectAddEmpty = array();
         if (is_array($do->links())) {
             foreach ($do->links() as $field => $link) {
                 $do->fb_selectAddEmpty[] = $field;
             }
         }
         if (is_array($do->fb_enumFields)) {
             foreach ($do->fb_enumFields as $field) {
                 $do->fb_selectAddEmpty[] = $field;
             }
         }
         $do->fb_formHeaderText = __('Search');
         $do->fb_submitText = '>>';
         $do->fb_linkNewValue = false;
         $formBuilder =& MyFB::create($do);
         $formBuilder->_cacheOptions = array('name' => 'office_searchform', 'cacheDir' => APP_ROOT . 'app/' . APP_NAME . '/cache/forms/');
         $formBuilder->preGenerateFormCallback = array($do, 'prepareSearchForm');
         $do->prepareSearchForm($fb);
         $do->fb_userEditableFields = $do->fb_fieldsToRender;
         $table = $do->table();
         foreach ($do->fb_fieldsToRender as $field) {
             if ($table[$field] & DB_DATAOBJECT_DATE || $table[$field] & DB_DATAOBJECT_TIME) {
                 $label = $do->fb_fieldLabels[$field] ? $do->fb_fieldLabels[$field] : $field;
                 $do->fb_preDefElements[$field] = MyQuickForm::createElement('advandate', $field, $label, array("language" => T::getLang()));
             }
         }
         $formBuilder->postGenerateFormCallback = array($do, 'postPrepareSearchForm');
         $formBuilder->useForm($form);
         $formBuilder->getForm();
         foreach ($form->_elements as $elem) {
             $cached[] = $elem;
         }
         if ($cache) {
             $cache->save(serialize($cached));
         }
     }
     $form->_rules = array();
     $form->_formRules = array();
     $form->_required = array();
     self::addHiddenFields($form, array('search', 'page', '__dontpaginate', '_c_'), true);
     $form->addElement('checkbox', '__dontpaginate', 'Afficher les résultats sur une seule page');
     return $form;
 }
예제 #3
0
파일: Mtpl.php 프로젝트: demental/m
 public function altlocaleimg($filename, $altfolder = NULL, $mainfolder = 'images/locale/')
 {
     if (!is_null($altfolder)) {
         return $this->img($filename, array($altfolder . '/' . T::getLang(), T::getLang(), substr(T::getLang(), 0, 2)), $mainfolder);
     }
     return $this->img($filename, array(T::getLang(), substr(T::getLang(), 0, 2)), $mainfolder);
 }
예제 #4
0
파일: Pluggable.php 프로젝트: demental/m
*
* Plugin extension for DB_DataObject
* Extends DB_DataObject_Iterator
*
* @package      M
* @subpackage   DB_DataObject_Pluggable
* @author       Arnaud Sellenet <demental at github>

* @license      http://opensource.org/licenses/lgpl-license.php GNU Lesser General Public License
* @version      0.1
*/
if (!defined('PLUGIN_DIR')) {
    define('PLUGIN_DIR', 'M/DB/DataObject/Plugin/');
}
if (!function_exists('__')) {
    T::getLang();
}
function date2array($dt)
{
    if ($dt == NULL) {
        return array('Y' => '0000', 'm' => '00', 'd' => '00');
    } else {
        return DB_DataObject_FormBuilder::_date2array($dt);
    }
}
class DB_DataObject_Pluggable extends DB_DataObject implements Iterator
{
    protected $_listeners = array();
    public static $objectRegistry = array();
    public $fb_dateFromDatabaseCallback = 'date2array';
    public $_pluginsLoaded = false;
예제 #5
0
파일: init.php 프로젝트: demental/m
<?php

Mreg::append('autoload', array('wptools' => dirname(__FILE__) . '/lib/wptools.php'));
T::$config['switch_callbacks'][] = 'WPTools::on_switch_lang';
WPTools::on_switch_lang(T::getLang());
예제 #6
0
파일: URL.php 프로젝트: demental/m
 /**
  * generates and returns a relative path when URL is set to the "old" method.
  * @see URL::getAnchor() for parameters detail
  * @return string generated relative path
  **/
 public static function getOldAnchor($route, $params = null, $lang = null)
 {
     unset($params['lang']);
     unset($params['module']);
     unset($params['action']);
     if ($lang == null) {
         $lang = T::getLang();
     }
     if ($params == null) {
         return $lang . '/' . $route;
     }
     return $lang . '/' . $route . '?' . http_build_query($params);
 }
예제 #7
0
파일: Module.php 프로젝트: demental/m
 /**
  *
  * description
  *
  * @param $action
  * @return unknown_type
  */
 public function getCacheId($action)
 {
     if (count($_POST) == 0) {
         $hash = $this->_modulename . '_' . $action . '_' . T::getLang() . '_' . md5(print_r($_GET, true));
         return $hash;
     }
     return false;
 }
예제 #8
0
파일: db.php 프로젝트: demental/m
 /**
  * fetches and returns translated value for field $field of object $obj
  * using the current language if not specified.
  * @param $obj      DB_DataObject
  * @param $field    string          object's field name
  * @param $lang     string  (optional)  lang to be fetched
  * @return          string          translated value
  **/
 function getTranslation($obj, $field, $lang = null)
 {
     if (!$obj->pk()) {
         return false;
     }
     if (empty($lang)) {
         $lang = T::getLang();
     }
     $translateDO =& DB_DataObject::factory($obj->tableName() . '_l10n');
     if (PEAR::isError($translateDO)) {
         echo "Erreur lors de la traduction : " . $translateDO->getMessage();
         exit;
     }
     $translateDO->l10n_lang = $lang;
     $translateDO->l10n_record_id = $obj->pk();
     if ($translateDO->find(TRUE)) {
         return $translateDO->{$field};
     } else {
         $translateDO->{$field} = $obj->{$field};
         $translateDO->insert();
         return $obj->{$field};
     }
 }