Beispiel #1
0
 /**
  * Enter description here...
  *
  * @param string $class Feg_AbstractView
  * @param string $view_label ID
  * @return Feg_AbstractView instance
  */
 static function getView($view_label, Feg_AbstractViewModel $defaults = null)
 {
     $active_worker = FegApplication::getActiveWorker();
     if (is_null(self::$views)) {
         self::_init();
     }
     if (self::exists($view_label)) {
         $model = self::$views[$view_label];
         return self::unserializeAbstractView($model);
     } else {
         // See if the worker has their own saved prefs
         @($prefs = unserialize(DAO_WorkerPref::get($active_worker->id, 'view' . $view_label)));
         // Sanitize
         if (!empty($prefs) && $prefs instanceof Feg_AbstractViewModel && !empty($prefs->class_name)) {
             if (!class_exists($prefs->class_name)) {
                 DAO_WorkerPref::delete($active_worker->id, 'view' . $view_label);
             }
             $prefs = null;
         }
         // If no worker prefsd, check if we're passed defaults
         if (!$prefs instanceof Feg_AbstractViewModel && !empty($defaults)) {
             $prefs = $defaults;
         }
         // Create a default view if it doesn't exist
         if ($prefs instanceof Feg_AbstractViewModel) {
             if (!empty($prefs->class_name) && class_exists($prefs->class_name)) {
                 $view = new $prefs->class_name();
                 $view->id = $view_label;
                 if (!empty($prefs->view_columns)) {
                     $view->view_columns = $prefs->view_columns;
                 }
                 if (!empty($prefs->renderLimit)) {
                     $view->renderLimit = $prefs->renderLimit;
                 }
                 if (null !== $prefs->renderSortBy) {
                     $view->renderSortBy = $prefs->renderSortBy;
                 }
                 if (null !== $prefs->renderSortAsc) {
                     $view->renderSortAsc = $prefs->renderSortAsc;
                 }
                 self::setView($view_label, $view);
                 return $view;
             }
         }
     }
     return null;
 }