Exemple #1
0
 /**
  * Find specialized entity class.
  *
  * FIXME: This needs refactor, and a better pattern for settings objects.
  *
  * @param string $type
  * @param int $class = Yamm_EntityFactory::CLASS_ENTITY
  *   One of the Yamm_EntityFactory::CLASS_* constants, determine which defined
  *   class it will return.
  * 
  * @return string
  *   Class name, or NULL in case of failure.
  */
 public static function findClass($type, $class = Yamm_EntityFactory::CLASS_ENTITY)
 {
     $types = oox_registry_get('yamm_entity')->getItemCache();
     if (!isset($types[$type])) {
         throw new Yamm_Entity_ClassNotFoundException("Unsupported entity type " . $type . " (not defined by a module).");
     }
     // This particularly should be refactored, this is ugly.
     $className = $types[$type]['class'];
     if ($class == Yamm_EntityFactory::CLASS_SETTINGS) {
         $className .= 'Settings';
     }
     if (class_exists($className)) {
         return $className;
     }
     throw new Yamm_Entity_ClassNotFoundException("Class " . $className . " is missing. Check your classes definition.");
 }
Exemple #2
0
 /**
  * (non-PHPdoc)
  * @see IFormable::form()
  */
 public function form()
 {
     $form = array();
     yamm_api_bootstrap_entity();
     // Backend selector.
     $form['backend'] = array('#type' => 'fieldset', '#title' => t("Backend options"), '#collapsible' => TRUE, '#collapsed' => FALSE);
     $form['backend']['backend_type'] = oox_registry_item_selector('yamm_sync_backend');
     $form['backend']['backend_type']['#title'] = t("Backend");
     try {
         $backend = $this->getBackend();
         $form['backend']['backend_type']['#default_value'] = $this->_options['backend'];
         $form['backend']['backend_form'] = $backend->form();
     } catch (Yamm_Sync_ProfileException $e) {
         $form['backend']['backend_type']['#description'] = t("No value is set, specific options form will appear after you save this profile with a backend set.");
     }
     // Entities options.
     foreach (oox_registry_get('yamm_entity')->getItemCache() as $type => $desc) {
         try {
             $settings = $this->getSettingsForType($type);
             if (!$settings instanceof Yamm_EntitySettingsAbstract) {
                 $settings = Yamm_EntityFactory::getEntitySettingsInstance($type);
             }
             $form['entity_' . $type] = array('#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => TRUE, '#title' => t($desc['name']));
             $form['entity_' . $type] += $settings->form();
             $types[] = $type;
         } catch (Yamm_Entity_ClassNotFoundException $e) {
             // Silent error, our Yamm_Entity does not implement the
             // Yamm_EntitySettingsAbstract class or just does not exists.
         }
     }
     $form['types'] = array('#type' => 'value', '#value' => $types);
     // Vertical tab usage.
     if (module_exists('vertical_tabs')) {
         vertical_tabs_add_vertical_tabs($form);
     }
     return $form;
 }
Exemple #3
0
 /**
  * Create an instance by UUID.
  *
  * @param string $uuid
  * 
  * @return Yamm_Entity
  *   NULL in case of failure.
  */
 public static function loadByUuid($uuid)
 {
     if ($uuid_data = yamm_api_uuid_load($uuid)) {
         return oox_registry_get('yamm_entity')->getItem($uuid_data->type, $uuid);
     }
     throw new Yamm_Entity_UnknownUuidException("UUID " . $uuid . " does not exists in database.");
 }
Exemple #4
0
 /**
  * (non-PHPdoc)
  * @see IFormable::form()
  */
 public function form()
 {
     yamm_api_bootstrap_entity();
     // Building views list.
     $base_table = $available_views = $selected_views = array();
     $views_list = views_get_all_views();
     $default_views = array();
     foreach (oox_registry_get('yamm_entity')->getItemCache() as $type => $value) {
         // Getting all base table with entities.
         if (isset($value['base_table'])) {
             $base_table[$value['base_table']] = $value['base_table'];
         }
     }
     foreach ($views_list as $name => $view) {
         // Check if the view has a known base table for entities.
         if (in_array($view->base_table, $base_table)) {
             $available_views[$view->name] = '<strong>' . $view->name . '</strong> - ' . filter_xss_admin($view->description);
             $default_views[$view->name] = 0;
         }
     }
     // Saved selected views.
     $selected_views = $this->getViews();
     // Check all selected views.
     foreach ($selected_views as $view) {
         //  Check if view has not been deleted.
         if (array_key_exists($view->name, $default_views)) {
             $default_views[$view->name] = $view->name;
         }
     }
     $form['views'] = array('#type' => 'checkboxes', '#options' => $available_views, '#default_value' => $default_views, '#title' => t('Views that export content'), '#description' => t('Select views that export content. Only the default display will be use for content export. All select views will be used at each client synchronization whatever is the entity type they return.'), '#required' => TRUE, '#multiple' => TRUE);
     return $form;
 }