예제 #1
0
 /**
  * Object editing view
  *
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  * @return boolean Indicating success.
  */
 public function _handler_edit($handler_id, array $args, array &$data)
 {
     $this->_object = midcom::get('dbfactory')->get_object_by_guid($args[0]);
     $this->_object->require_do('midgard:update');
     $this->_object->require_do('midgard:parameters');
     midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin');
     // List all parameters for display
     $qb = midcom_db_parameter::new_query_builder();
     $qb->add_constraint('parentguid', '=', $this->_object->guid);
     $qb->add_order('domain');
     $qb->add_order('name');
     $data['parameters'] = $qb->execute();
     $this->_prepare_request_data();
     midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data);
 }
예제 #2
0
 /**
  * Get row by its ID
  *
  * @param String $row    Row identifier
  * @return mixed         Array containing columns and values as key => value pairs or false on failure
  */
 public function get_row($row)
 {
     $column = array();
     // Create an empty column placeholder
     foreach ($this->columns as $column => $title) {
         $columns[$column] = '';
     }
     switch ($this->storage_mode) {
         case 'serialized':
             static $serialized_data_cached = array();
             if (isset($serialized_data_cached[$this->name])) {
                 $serialized_data = $serialized_data_cached[$this->name];
             } else {
                 $serialized_data = null;
             }
             if (is_null($serialized_data)) {
                 $data = unserialize($this->value);
                 if (!$data) {
                     return false;
                 }
                 $serialized_data = $data;
             }
             if (!isset($serialized_data[$row])) {
                 // Special handling for determined rows
                 if (isset($this->rows[$row])) {
                     return $column;
                 }
                 return false;
             }
             $serialized_data_cached[$this->name] = $serialized_data;
             return $serialized_data[$row];
         case 'parameter':
             // Initialize the returned column
             $column = array();
             $mc = midcom_db_parameter::new_collector('parentguid', $this->storage->object->guid);
             $mc->add_value_property('name');
             $mc->add_value_property('value');
             // Some (hopefully older) Midgards still include deleted parameters oddly enough
             $mc->add_constraint('metadata.deleted', '=', 0);
             $mc->add_constraint('domain', '=', $this->parameter_domain);
             $mc->add_constraint('name', 'LIKE', "{$this->name}{$this->storage_mode_parameter_limiter}{$row}{$this->storage_mode_parameter_limiter}%");
             $mc->execute();
             $keys = $mc->list_keys();
             if (count($keys) === 0) {
                 return false;
             }
             // Length of the limiter
             $length = strlen("{$this->name}{$this->storage_mode_parameter_limiter}{$row}{$this->storage_mode_parameter_limiter}");
             foreach ($keys as $guid => $array) {
                 $name = $mc->get_subkey($guid, 'name');
                 $value = $mc->get_subkey($guid, 'value');
                 if (!$name || !$value) {
                     continue;
                 }
                 $key = substr($name, 0, $length);
                 // Not available in the column set, skipping
                 if (!isset($column[$key])) {
                     continue;
                 }
                 $column[$key] = $value;
             }
     }
 }
예제 #3
0
파일: main.php 프로젝트: nemein/openpsa
 /**
  * List all child elements, nodes and leaves alike, of the node with ID
  * $parent_node_id. For every child element, an array of ID and type (node/leaf)
  * is given as
  *
  * - MIDCOM_NAV_ID => 0,
  * - MIDCOM_NAV_TYPE => 'node'
  *
  * If there are no child elements at all the method will return an empty array,
  * in case of an error false.  NOTE: This method should be quite slow, there's
  * room for improvement... :-)
  *
  * @param int $parent_node_id    The ID of the parent node.
  * @return Array                A list of found elements, or false on failure.
  */
 function list_child_elements($parent_node_id)
 {
     // Fetch nodes and leaves
     $parent_node = $this->get_node($parent_node_id);
     if (!$parent_node) {
         return false;
     }
     $guid = $parent_node[MIDCOM_NAV_GUID];
     if ($GLOBALS['midcom_config']['symlinks']) {
         $guid = $parent_node[MIDCOM_NAV_OBJECT]->guid;
     }
     $navorder = (int) midcom_db_parameter::get_by_objectguid($guid, 'midcom.helper.nav', 'navorder');
     switch ($navorder) {
         case MIDCOM_NAVORDER_DEFAULT:
             $navorder = 'topicsfirst';
             break;
         case MIDCOM_NAVORDER_TOPICSFIRST:
             $navorder = 'topicsfirst';
             break;
         case MIDCOM_NAVORDER_ARTICLESFIRST:
             $navorder = 'articlesfirst';
             break;
         case MIDCOM_NAVORDER_SCORE:
             $navorder = 'score';
             break;
         default:
             $navorder = 'topicsfirst';
             break;
     }
     $nav_object = midcom_helper_nav_itemlist::factory($navorder, $this, $parent_node_id);
     $result = $nav_object->get_sorted_list();
     return $result;
 }