diff --git a/phpgwapi/inc/class.vfs_customfields.inc.php b/phpgwapi/inc/class.vfs_customfields.inc.php deleted file mode 100644 index af12d246e6..0000000000 --- a/phpgwapi/inc/class.vfs_customfields.inc.php +++ /dev/null @@ -1,276 +0,0 @@ - * - * sponsored by Thyamad - http://www.thyamad.com * - * ------------------------------------------------------------------------- * - * Description: Custom Field class handler for VFS (SQL implementation v2) * - * ------------------------------------------------------------------------- * - * This program is free software; you can redistribute it and/or modify it * - * under the terms of the GNU General Public License as published by the * - * Free Software Foundation; either version 2 of the License, or (at your * - * option) any later version. * - \***************************************************************************/ - - class vfs_customfields - { - var $db; - - function vfs_customfields() - { - $this->db = clone($GLOBALS['phpgw']->db); - - } - - # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - # Functions to associate customfields to a file # - # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - - - //$file_id: the id of the file - function & get_fields_by_fileid($file_id) - { - if (!is_numeric($file_id) || !(((int)$file_id)==$file_id)) - return false; - - $sql = "SELECT cf.customfield_name as name, - cfd.data as data - FROM phpgw_vfs2_customfields as cf, - phpgw_vfs2_customfields_data as cfd - WHERE cf.customfield_id = cfd.customfield_id - AND cf.customfield_active = 'Y' - AND cfd.file_id = $file_id"; - - $this->db->query($sql,__LINE__,__FILE__); - - while($this->db->next_record()) - { - $result[$this->db->Record['name']] = $this->db->Record['data']; - } - - return $result; - - } - - //$data = array(file_id => array('field1'=> 'value', ....), - // file_id2 => array(...) ... ) - // Store will do insert or update, depending if the field exists or - // not. - function store_fields($data) - { - if (!is_array($data)) - return false; - - $fields = $this->get_customfields('customfield_name'); - - foreach($data as $file_id => $file_data) - { - foreach($file_data as $name => $value) - { - //Column type does not exists - if (!array_key_exists($name,$fields)) - { - //TODO ERROR HANDLING - continue; - } - - $this->db->insert('phpgw_vfs2_customfields_data', - array('data' => $value), - array('file_id'=>$file_id,'customfield_id'=>$fields[$name]['customfield_id']), - __LINE__,__FILE__); - - } - } - return true; - } - - //$data = array('file_id' => array('field1','field2',...), - // 'fileid2' => ... ) - function delete_fields($data) - { - - $fields = $this->get_customfields('customfield_name'); - - foreach($data as $file_id => $file_fields) - { - foreach($file_fields as $column_name) - { - if (!array_key_exists($column_name,$fields)) - { - //TODO ERROR HANDLING - continue; - } - - $this->db->delete('phpgw_vfs2_customfields_data', - array('file_id' => $file_id,'customfield_id'=>$fields[$column_name]['customfield_id']),__LINE__,__FILE__); - } - } - } - - /* Search the files that have $keyword in any field, or in the fields - specified in the array fields - @param $fields array('field1','fields2',...)*/ - function search_files($keyword,$fields=null) - { - - $where = ''; - - if ($fields) - { - $customfields = $this->get_customfields('customfield_name'); - - foreach ($fields as $field) - { - if ($customfields[$field]) - { - $cf_ids[] = 'customfield_id='.$customfields[$field]['customfield_id']; - } - } - - if ($cf_ids) - { - $where = implode(' OR ',$cf_ids); - - $where = 'AND ('.$where.')'; - } - - } - - - - $sql = "SELECT file_id - FROM phpgw_vfs2_customfields_data - WHERE data LIKE '%$keyword%' - $where"; - - $this->db->query($sql,__LINE__,__FILE__); - - $res = array(); - while($this->db->next_record()) - { - $res[] = $this->db->Record['file_id']; - } - return $res; - } - - # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - # Functions to manage custom field types # - # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - - //Gets all custom field types, indexed by $indexedby. - //Example: array( 'customfieldname1' => array('customfield_id'=>x,'customfield_description'=>y,'type'=>z...)...) - //@param bool $activeonly If true, brings only active fields - function get_customfields($indexedby='customfield_name',$activeonly=true) - { - $where=($activeonly)?array('customfield_active'=>'Y'):array(); - - $this->db->select('phpgw_vfs2_customfields','*',$where, - __LINE__,__FILE__); - - $result = array(); - while($this->db->next_record()) - { - $result[] = $this->db->Record; - } - - if (!is_array($result[0]) || !array_key_exists($indexedby,$result[0])) - { - $indexedby = 'customfield_name'; - } - - $result2 = array(); - foreach($result as $key => $val) - { - $result2[$val[$indexedby]] = $val; - } - - return $result2; - } - - //samething that $this->get_customfields, but returns an array in the - //format array('name' => 'description', 'name2'=>'desc2',...) - function get_attributes($activeonly=true) - { - $where=($activeonly)?array('customfield_active'=>'Y'):array(); - - $this->db->select('phpgw_vfs2_customfields','*',$where, - __LINE__,__FILE__); - - while($this->db->next_record()) - { - $result[] = $this->db->Record; - } - - $result2 = array(); - foreach($result as $key => $val) - { - $result2[$val['customfield_name']] = $val['customfield_description']; - } - - return $result2; - } - - - - //Add a new type of custom field - //$type can be of the same possible types for egw - function add_customfield($name,$description,$type,$precision='',$active='N') - { - $active = strtoupper($active); - - $res = $this->db->insert('phpgw_vfs2_customfields',array( - 'customfield_name' => $name, - 'customfield_description' => $description, - 'customfield_type' => $type, - 'customfield_precision' => $precision, - 'customfield_active' => $active ), - __LINE__,__FILE__); - - if ($res) - { - return true; - } - return false; - } - - //Update a customfield type (customfield_name, customfield_description, type, precision, active) - function update_customfield($customfield_id,$data) - { - if (!is_numeric($customfield_id) || !(((int)$customfield_id)==$customfield_id)) - { - return false; - } - - if ($data['customfield_active']) - { - $data['customfield_active'] = strtoupper($data['customfield_active']); - } - - if ($this->db->update('phpgw_vfs2_customfields',$data,array('customfield_id'=>$customfield_id),__LINE__,__FILE__)) - { - return true; - } - return false; - } - - //generally better inactivate a field than remove. - function remove_customfield($customfield_id) - { - $res = $this->db->delete('phpgw_vfs2_customfields',array('customfield_id'=>$customfield_id),__LINE__,__FILE__); - - if ($res) - { - $res2 = $this->db->delete('phpgw_vfs2_customfields_data',array('customfield_id'=>$customfield_id),__LINE__,__FILE__); - - if ($res2) - { - return true; - } - } - return false; - } - - } -?> diff --git a/phpgwapi/inc/class.vfs_mimetypes.inc.php b/phpgwapi/inc/class.vfs_mimetypes.inc.php deleted file mode 100644 index f35224ada0..0000000000 --- a/phpgwapi/inc/class.vfs_mimetypes.inc.php +++ /dev/null @@ -1,359 +0,0 @@ - * - * sponsored by Thyamad - http://www.thyamad.com * - * ------------------------------------------------------------------------- * - * Description: Mime type class handler for VFS (SQL implementation v2) * - * ------------------------------------------------------------------------- * - * This program is free software; you can redistribute it and/or modify it * - * under the terms of the GNU General Public License as published by the * - * Free Software Foundation; either version 2 of the License, or (at your * - * option) any later version. * - \***************************************************************************/ - - #based on the filetypes.inc.php class by intermesh, see groupoffice.com - - #02 Sep 2004 viniciuscb Initial Release - - class vfs_mimetypes - { - var $default_filetype_icon; - var $db; - var $vfs; //Just to get mime types from vfs->get_ext_mime_type() - - var $default_mimetype = "application/OCTET-STREAM"; - - function vfs_mimetypes($create_vfs=true) - { - //use create_vfs=false and after this use $this->set_vfs to keep the - // same object (i.e. use reference) in $this->vfs - if ($create_vfs) - { - $this->vfs =& CreateObject('phpgwapi.vfs'); - } - - $this->default_filetype_icon = PHPGW_INCLUDE_ROOT.'/filescenter/icons/default.gif'; - - $this->db = clone($GLOBALS['phpgw']->db); - - } - - /*! - * function add_filetype - * @description Adds a new mime_type to the mime_types repository - * @note One of the two: extension or mime are required - * @param extension string A file extension - * @param mime string the mime type according to the RFCs 2046/1524 - * @param friendly string File type description in human-friendly - * format - * @param image string content of icon file - * @param icon_name string complete path filename of icon image - * (note: will be used only when icon_data is not set) - * @param mime_magic data used for mime_magic functions (planned) - * @param return_image bool if true will return the binary data of image - * @result Array with mime_id and other mime info, false otherwise - */ - function add_filetype($data,$return_image=false,$dont_update=false) - { - if (!$data['extension'] && !$data['mime']) - { - return false; - } - - - if (!$data['mime']) - { - $data['mime'] = $this->get_mime_type($data['extension']); - } - elseif (!$data['extension']) - { - $data['extension'] = '(n/a)'; //Thinking in 'Directory' - } - - if (!$data['friendly']) - { - if ($data['extension'] != '(n/a)') - { - $data['friendly'] = strtoupper($data['extension']).' File'; - } - else - { - $data['friendly'] = $data['mime']; - } - - } - - if (!$data['image']) - { - if (!$data['icon_name'] || !file_exists($data['icon_name'])) - { - $data['icon_name'] = $this->default_filetype_icon; - } - $fp = fopen($data['icon_name'],"r"); - $data['image'] = fread($fp,filesize($data['icon_name'])); - fclose($fp); - - $data['image'] = $this->db->quote($data['image'],'blob'); - - unset($data['icon_name']); - } - - - $where['extension'] = $data['extension']; - #$where['mime'] = $data['mime']; - - if ($dont_update) - { - $this->db->select('phpgw_vfs2_mimetypes','mime_id',$where,__LINE__,__FILE__); - if ($this->db->next_record()) - { - return false; //msgerror Existent register that cannot be overwritten - } - } - - - $res = $this->db->insert('phpgw_vfs2_mimetypes',$data,$where,__LINE__,__FILE__); - - - if($res) - { - $this->db->select('phpgw_vfs2_mimetypes','mime_id',$where, - __LINE__,__FILE__); - - $this->db->next_record(); - - $data['mime_id'] = $this->db->Record['mime_id']; - - if (!$return_image) - { - unset($data['image']); - } - - return $data; - } - - return false; - } - - /*! - * function edit_filetype - * @description Edits a mime_type of the mime_types repository - * @note mime_id required. Will change only passed vars. - * @param extension string A file extension - * @param mime string the mime type according to the RFCs 2046/1524 - * @param friendly string File type description in human-friendly - * format - * @param image string content of icon file - * @param icon_name string complete path filename of icon image - * (note: will be used only when icon_data is not set) - * @param mime_magic data used for mime_magic functions (planned) - * @param return_image bool if true will return the binary data of image - * @result Array with mime_id and other mime info, false otherwise - */ - function edit_filetype($data,$return_image=false) - { - - if (!$data['mime_id']) - { - return false; - } - - $where['mime_id'] = $data['mime_id']; - - if ($data['image']) - { - $data['image'] = $this->db->quote($data['image'],'blob'); - } - - $res = $this->db->update('phpgw_vfs2_mimetypes',$data,$where,__LINE__,__FILE__); - - - if($res) - { - if ($return_image) - { - $return_fields = '*'; - } - else - { - $return_fields = 'mime_id,extension,mime,friendly,mime_magic,proper_id'; - } - $this->db->select('phpgw_vfs2_mimetypes',$return_fields,$where, - __LINE__,__FILE__); - - $this->db->next_record(); - - return $this->db->Record; - } - - return false; - } - - - - - /*! - * function get_type - * @description Returns a mime type, based in extension or mime_id - * @param $desc array have index 'extension', 'mime_id' or 'mime' - * @param $return_image if true will return the binary data of image - * @result Array with mime_id and other mime info, false otherwise - */ - function get_type($data, $return_image=false) - { - //TODO error messages - if ((!$data['extension'] || $data['extension'] == '(n/a)') && - !$data['mime_id'] && !$data['mime']) - return false; - - - $return_fields = ($return_image)?'*':'mime_id,extension,friendly,mime_magic,mime,proper_id'; - - if ($data['mime_id']) - { - $this->db->select('phpgw_vfs2_mimetypes',$return_fields, - array('mime_id'=>$data['mime_id']),__LINE__,__FILE__); - } - else if ($data['extension']) - { - $this->db->select('phpgw_vfs2_mimetypes',$return_fields, - array('extension'=>$data['extension']),__LINE__,__FILE__); - } - else if ($data['mime']) - { - $this->db->select('phpgw_vfs2_mimetypes',$return_fields, - array('mime'=>$data['mime']),__LINE__,__FILE__); - } - - if ($data['extension'] && $data['mime']) - { - //if there is extension and mime specified and nothing was found only with extension, search mime - if ($this->db->next_record()) - return $this->db->Record; - else - { - $this->db->select('phpgw_vfs2_mimetypes',$return_fields, - array('mime'=>$data['mime']),__LINE__,__FILE__); - - if ($this->db->next_record()) - return $this->db->Record; - } - } - else - { - if ($this->db->next_record()) - return $this->db->Record; - } - - return false; - - } - - /*! - * function get_filetypes - * @description Returns an array with all file types in the repository - * @param $return_images if true, the images are returned in the array - * @param $offset int if specified, will bring a subset of repository - * @result Array: $arr[1]['mime_id'] ... - */ - function get_filetypes($return_images=false,$offset=false) - { - $return_fields = ($return_images)?'*':'mime_id,extension,friendly,mime_magic,mime,proper_id'; - - $this->db->select('phpgw_vfs2_mimetypes',$return_fields,false, - __LINE__,__FILE__,$offset); - - $result = array(); - while ($this->db->next_record()) - { - $result[] = $this->db->Record; - } - return $result; - } - - /*! - * function update_filetype - * @description Updates a file type information in the filetype - * repository - * @param $return_image if true will return the binary data of image - * @note parameters in $data: the same of add_filetype() - * @result bool true on success, false otherwise - */ - function update_filetype($data) - { - if (!$data['mime_id']) - { - return false; - } - - if ($data['icon_name']) - { - if (file_exists($data['icon_name'])) - { - $fp = fopen($data['icon_name'],"r"); - $data['image'] = fread($fp,filesize($icon)); - fclose($fp); - } - - $data['image'] = $this->db->quote($data['image'],'blob'); - - unset($data['icon_name']); - } - - - $where['mime_id'] = $data['mime_id']; - - if ($this->db->update('phpgw_vfs2_mimetypes',$data,$where,__LINE__, - __FILE__)) - return true; - - return false; - } - - - /*! - * function delete_filetype - * @description deletes a type from the file type repository - * @param $mime_id the mime_id of the record - * @result bool true on success, false otherwise - */ - function delete_filetype($mime_id) - { - if ($this->db->delete('phpgw_vfs2_mimetypes', - array('mime_id'=>$mime_id),__LINE__,__FILE__)) - return true; - - return false; - } - - function set_vfs(&$vfs) - { - $this->vfs =& $vfs; - } - - #private methods - - function get_mime_type($extension) - { - return $this->vfs->get_ext_mime_type(array('string'=>$extension)); - } - - function default_values ($data, $default_values) - { - for ($i = 0; list ($key, $value) = each ($default_values); $i++) - { - if (!isset ($data[$key])) - { - $data[$key] = $value; - } - } - - return $data; - } - - } - -?> diff --git a/phpgwapi/inc/class.vfs_prefixes.inc.php b/phpgwapi/inc/class.vfs_prefixes.inc.php deleted file mode 100644 index c88827a353..0000000000 --- a/phpgwapi/inc/class.vfs_prefixes.inc.php +++ /dev/null @@ -1,373 +0,0 @@ - * - * sponsored by Thyamad - http://www.thyamad.com * - * ------------------------------------------------------------------------- * - * Description: File ID Prefixes class handler for SQL implementation v2 * - * ------------------------------------------------------------------------- * - * This program is free software; you can redistribute it and/or modify it * - * under the terms of the GNU General Public License as published by the * - * Free Software Foundation; either version 2 of the License, or (at your * - * option) any later version. * - \***************************************************************************/ - - #12 Oct 2004 viniciuscb Initial Release - - define ('PHPGW_VFS2_PREFIX_APP','vfs2_prefix'); //for prefix - define ('PHPGW_VFS2_PTYPE_APP','vfs2_ptype'); //for file type - - class vfs_prefixes - { - var $db; - - var $table_fields = array( - 'prefix_id', - 'owner_id', - 'prefix', - 'prefix_description', - 'prefix_type' - ); - - function vfs_prefixes() - { - $this->db = clone($GLOBALS['phpgw']->db); - } - - /*! - * function add - * @description Adds a new File ID Prefix to the prefixes repository - * @param prefix string (required) A prefix - * @param prefix_description string (optional) Brief prefix description - * @param owner_id int (required) Owner Id of prefix - * @param prefix_type (optional) can be 'p' for prefix, 't' for type. - * @result (int) prefix_id - * - * @note: will search for another equal $prefix in repository. If - * exists, returns its prefix_id and if user have permission, - * updates this prefix. If don't exists, insert and return its - * prefix_id. $dont_update will not do any update if exists, even - * if current user can update. - */ - function add($data,$dont_update=false) - { - - if (!$data['prefix']) - { - return false; - } - - if (!$data['prefix_type']) - { - $data['prefix_type'] = 'p'; - } - - //eliminate keys which are not a field in table - foreach($data as $key => $val) - { - if (!in_array($key,$this->table_fields)) - { - unset($data[$key]); - } - } - - //see if exists some equal prefix id - $this->db->select('phpgw_vfs2_prefixes','prefix_id',array('prefix' => $data['prefix'])); - - if($this->db->next_record()) //exists - { - if ($dont_update) - { - return $this->db->Record['prefix_id']; - } - $data['prefix_id'] = $this->db->Record['prefix_id']; - return $this->edit($data); - } - - if (!$data['owner_id']) - { - $data['owner_id'] = $GLOBALS['phpgw_info']['user']['account_id']; - } - - $this->db->insert('phpgw_vfs2_prefixes',$data,false,__LINE__,__FILE__); - - $this->db->select('phpgw_vfs2_prefixes','prefix_id',array('prefix' => $data['prefix'])); - - if($this->db->next_record()) //exists - { - return $this->db->Record['prefix_id']; - } - - return false; - } - - /*! - * function edit - * @description Edits a File ID Prefix - * @param prefix_id int (required) The ID for prefix - * @param prefix string (optional) A prefix - * @param prefix_description string (optional) Brief prefix description - * @param owner_id int (optional) Owner Id of prefix - * @param prefix_type (optional) can be 'p' for prefix, 't' for type. - * @result (int) prefix_id - * @result (bool) true on success, false on any other possibility - */ - function edit($data) - { - if (!$data['prefix_id']) - { - return false; - } - - //eliminate keys which are not a field in table - foreach($data as $key => $val) - { - if (!in_array($key,$this->table_fields)) - { - unset($data[$key]); - } - } - - $where['prefix_id'] = $data['prefix_id']; - unset($data['prefix_id']); - - return $this->db->update('phpgw_vfs2_prefixes',$data,$where,__LINE__,__FILE__); - - } - - /*! - * function remove - * @description Removes a File ID Prefix - * @param prefix_id int (required) The ID for prefix - * @result (bool) true on success, false on any other possibility - */ - function remove($prefix_id) - { - return $this->db->delete('phpgw_vfs2_prefixes',array('prefix_id' => $prefix_id),__LINE__,__FILE__); - } - - /*! - * function get - * @description Gets information about a prefix just based in prefix_id - * @param prefix_id int (required) The ID for prefix - * OR - * @param prefix int (required) The prefix - * @result (array) with column names as indexes, empty array if inexist - */ - function get($data) - { - if (!$data['prefix_id'] && !$data['prefix']) - return false; - - - $this->db->select('phpgw_vfs2_prefixes','*',$data,__LINE__,__FILE__); - - if ($this->db->next_record()) - { - return $this->db->Record; - } - return array(); - } - - /*! - * function get_prefixes - * @description Gets all prefixes this user can view, based in querying - * acl - * @param user_id int (required) The ID of user to whom you want to - * know, or will get current user as default - * @param status string If 'view', returns info about all prefixes - * user can view. if 'owns', return only prefixes user owns - * @result (array) with column names as indexes, empty array if inexist - */ - function get_prefixes($status='view',$user_id=false,$type='p') - { - if (!$user_id) - { - $user_id = $GLOBALS['phpgw_info']['user']['account_id']; - } - - switch ($status) - { - case 'owns': - $this->db->select('phpgw_vfs2_prefixes','*',array('owner_id'=>$user_id,'prefix_type'=>$type),__LINE__,__FILE__); - - while($this->db->next_record()) - { - $return[] = $this->db->Record; - } - - break; - case 'view': - $acl =& CreateObject('phpgwapi.acl',$user_id); - - //fetch ids of prefixes that user can view - if (!$pr_list = $acl->get_location_list_for_id(PHPGW_VFS2_PREFIX_APP,PHPGW_ACL_READ,$user_id)) - { - $pr_list = array(); - } - - //fetch ids of prefixes that groups user belong to can view - //Note: this will be in two phases. One: fetch groups user - // belongs to. Two: fetch prefix list for these groups - - /* Note: prefixes are organized in phpgwapi.acl in the - * following schema: - * - appname: (PHPGW_VFS2_PREFIX_APP) - * - location: id_prefix - * - account_id: Id of user that has grants (not the - * grantor. The grantor is only the owner of prefix, - * defined in prefixes repository). - * - acl_rights: PHPGW_ACL_READ - */ - - $user_groups = $GLOBALS['phpgw']->accounts->membership($user_id); - - foreach($user_groups as $group) - { - if (!$group_pr_list = $acl->get_location_list_for_id(PHPGW_VFS2_PREFIX_APP,PHPGW_ACL_READ,$group['account_id'])) - { - $group_pr_list = array(); - } - - $pr_list = array_merge($pr_list,$group_pr_list); - } - - //remove dupliate values - $pr_list = array_unique($pr_list); - - //now we have the list of prefixes user can view. We must - //now fetch complete information about prefixes of - //phpgw_vfs2_prefixes - - if (!count($pr_list)) - { - return array(); - } - - if ($pr_list) - { - $prefix_string = '('.implode(',',$pr_list).')'; - - $this->db->select('phpgw_vfs2_prefixes','*','prefix_id IN '.$prefix_string." AND prefix_type='$type'",__LINE__,__FILE__); - - while($this->db->next_record()) - { - $return[] = $this->db->Record; - } - } - else - { - return array(); - } - - break; - default: - return false; - } - return $return; - } - - /*! - * function update_permissions - * @description Updates users who can see a prefix - * - * @param prefix_id int (required) The prefix that will have permissions - * changed - * @param user_list array Array with account_ids that can read prefix - * as values. - * - * @result (bool) - */ - function update_permissions($prefix_id,$user_list) - { - - //1. see if current user is owner of the prefix - $current_user_id = $GLOBALS['phpgw_info']['user']['account_id']; - - $prefix_info = $this->get(array('prefix_id'=>$prefix_id)); - - if ($current_user_id != $prefix_info['owner_id']) - { - return false; - } - - //2. get current permission for prefix - $current_permissions = $this->get_permissions(array('prefix_id'=>$prefix_id)); - - //3. change permissions - $list_of_users_to_add = array_diff($user_list,$current_permissions); - $list_of_users_to_del = array_diff($current_permissions,$user_list); - - - $acl =& CreateObject('phpgwapi.acl',$current_user_id); - - foreach($list_of_users_to_add as $user_id) - { - $acl->account_id = $user_id; - $acl->read_repository(); - #echo "
\nAdded: prefix $prefix_id ; user $user_id"; - $acl->add(PHPGW_VFS2_PREFIX_APP,$prefix_id,PHPGW_ACL_READ); - $acl->save_repository(); - } - - foreach($list_of_users_to_del as $user_id) - { - $acl->account_id = $user_id; - $acl->read_repository(); - #echo "
\nDeleted: prefix $prefix_id ; user $user_id"; - $acl->delete(PHPGW_VFS2_PREFIX_APP,$prefix_id); - $acl->save_repository(); - } - - } - - /*! - * function get_permissions - * @description This will get all permissions for a given prefix. - * In other words, will return an array of all accounts who - * can see a prefix. Will not dive into groups' users, - * only showing user and group accounts who can see - * prefix. - * - * @param prefix int (required) The File ID Prefix - * OR - * @param prefix_id int (required) The ID of the File ID Prefix - * @param prefixes array The same type of the return of get_prefixes - * - * @result (array) with column names as indexes, empty array if inexist - */ - function get_permissions($data) - { - if (is_numeric($data)) - { - $prefix_id = $data; - } - elseif ($data['prefix']) - { - $this->db->select('phpgw_vfs2_prefixes','prefix_id',array('prefix'=>$data['prefix']),__LINE__,__FILE__); - if ($this->db->next_record()) - { - $prefix_id = $this->db->Record['prefix_id']; - } - } - elseif($data['prefix_id']) - { - $prefix_id = $data['prefix_id']; - } - - if (!$prefix_id) - { - return false; - } - - $acl =& CreateObject('phpgwapi.acl'); - $user_ids = $acl->get_ids_for_location($prefix_id,PHPGW_ACL_READ,PHPGW_VFS2_PREFIX_APP); - - return ($user_ids)?$user_ids:array(); - } - - } - -?> diff --git a/phpgwapi/inc/class.vfs_sharing.inc.php b/phpgwapi/inc/class.vfs_sharing.inc.php deleted file mode 100644 index aac5c51506..0000000000 --- a/phpgwapi/inc/class.vfs_sharing.inc.php +++ /dev/null @@ -1,516 +0,0 @@ - * - * sponsored by Thyamad - http://www.thyamad.com * - * ------------------------------------------------------------------------- * - * Description: File Sharing class handler for VFS (SQL implementation v2) * - * ------------------------------------------------------------------------- * - * This program is free software; you can redistribute it and/or modify it * - * under the terms of the GNU General Public License as published by the * - * Free Software Foundation; either version 2 of the License, or (at your * - * option) any later version. * - \***************************************************************************/ - - // This class had to be created because file sharing work very differently - // In fm2 than in fm. - - #FIXME this class is completely vfs_sql2 oriented. Must exist implementation - # to other types - - class vfs_sharing - { - var $accounts; - var $db; - - /*! - * function vfs_sharing - * @description Class constructor - */ - function vfs_sharing() - { - $this->accounts =& $GLOBALS['phpgw']->accounts; - $this->db = clone($GLOBALS['phpgw']->db); - } - - /*! - * function set_permissions - * @description Add specified permissions that do not exist, remove - * unspecified permissions that exist. Easier to call than - * add_permissions and then remove_permissions - * @param array $data in the following format: - * array( - * file_id => array( - * account_id => acl_rights, - * account_id2 => acl_rights2,... - * ), - * file_id2 ... ); - */ - function set_permissions($data) - { - //TODO see if a user have permissions in a file. Only if he have - //(or if is inside his homedir) he can change permissions - if (!$data || !is_array($data)) - { - return false; - } - - //search for permissions on files, to know which ones must be - //updated/inserted - reset($data); - while(list($file_id,$account_ids) = each($data)) - { - $file_ids[] = $file_id; - } - - $sql = 'SELECT * from phpgw_vfs2_shares - WHERE file_id IN ('.implode(',',$file_ids).')'; - - $this->db->query($sql,__LINE__,__FILE__); - - while ($this->db->next_record()) - { - $current_shares[$this->db->Record['file_id']][$this->db->Record['account_id']] = $this->db->Record['acl_rights']; - } - - //now that we have the current permissions, must know which ones to - //insert/update and which ones to delete - reset($data); - while(list($file_id,$account_ids) = each($data)) - { - reset($account_ids); - while(list($account_id,$acl_rights) = each($account_ids)) - { - //exists - if (array_key_exists($account_id,$current_shares[$file_id])) - { - if ($current_shares[$file_id][$account_id] != $acl_rights) - { - $insert[$file_id][$account_id] = $acl_rights; - } - - unset($current_shares[$file_id][$account_id]); - - } - else - { - $insert[$file_id][$account_id] = $acl_rights; - } - } - } - - //get which ones to delete - reset($current_shares); - while(list($file_id,$account_ids) = each($current_shares)) - { - if (is_array($account_ids)) - { - reset($account_ids); - while(list($account_id,$acl_rights) = each($account_ids)) - { - $delete[$file_id][$account_id] = $acl_rights; - } - } - } - - foreach($insert as $file_id => $account_ids) - { - $this->store_permissions($file_id,$account_ids); - } - - foreach($delete as $file_id => $account_ids) - { - $this->remove_permissions($file_id,$account_ids); - } - - return true; - } - - /*! - * function store_qpermissions - * @description Add/update new permissions to a file id - * @param account_ids: array('account_id'=> acl_rights,acc_id2=>acl_r2,) - */ - function store_permissions($file_id,$account_ids) - { - if (!is_array($account_ids) || !is_numeric($file_id)) - { - return false; - } - - foreach($account_ids as $account_id => $acl_rights) - { - $this->db->insert('phpgw_vfs2_shares', - array('acl_rights'=>$acl_rights), - array('account_id'=>$account_id,'file_id'=>$file_id), - __LINE__,__FILE__); - } - return true; - } - - /*! - * function remove_permissions - * @description Remove some permissions of a file id - */ - function remove_permissions($file_id,$account_ids) - { - if (!is_array($account_ids) || !is_numeric($file_id)) - { - return false; - } - - //gets an array will all accounts as key - $accounts = array_keys($account_ids); - - $this->db->delete('phpgw_vfs2_shares', - array('account_id'=>$accounts,'file_id'=>$file_id), - __LINE__,__FILE__); - - return true; - } - - /** - * Function: remove_all_permissions - * - * Removes all permissions of a file - */ - function remove_all_permissions($file_id) - { - $this->db->delete('phpgw_vfs2_shares', - array('file_id'=>$file_id), - __LINE__,__FILE__); - } - - /*! - * function get_permissions - * @description This function will get the permissions set for a given - * file, makeing a simple query in the file repository. Does not - * search for permissions in parent dirs. If you want to know which - * is the permission for a user in a given file TAKING IN COUNT the - * parent dirs, use $this->get_file_permissions instead. - * @param int file_id The id of the file - * @result array with account_id as index, acl_rights as value - * @author Vinicius Cubas Brand - */ - function get_permissions($file_id) - { - $this->db->select('phpgw_vfs2_shares','acl_rights,account_id', - array('file_id'=>$file_id),__LINE__,__FILE__); - - $result = array(); - - while ($this->db->next_record()) - { - $result[$this->db->Record['account_id']] = $this->db->Record['acl_rights']; - } - - return ($result); - - } - - /*! - * function get_shares - * @description Get all shares in which the user have $permission - * @param $account_id The id of the user that can read the shared folder - * @param $is_owner If true, will get only the shared folders that - * $account_id owns. Useful to get the shares that account_id owns - * and have configured himself (true), or instead the shares of the - * others that he have $permission (false) - * @result array with the list of the file_id's of all shares - */ - function get_shares($account_id,$is_owner=false,$permission=PHPGW_ACL_READ,$exclude_dir='') - { - $default_values = array( - 'is_owner' => false, - 'permission' => PHPGW_ACL_READ - ); - - if (is_array($account_id)) - { - $account_id = array_merge($default_values,$account_id); - $is_owner = $account_id['is_owner']; - $permission = $account_id['permission']; - $exclude_dir = $account_id['exclude_dir']; - $only_dir = $account_id['only_dir']; - $account_id = $account_id['account_id']; - } - - if ($exclude_dir) - { - if (is_array($exclude_dir)) - { - foreach ($exclude_dir as $dir) - { - $append .= " AND fls.directory NOT LIKE '".$dir."%' "; - } - } - else - { - $append .= " AND fls.directory NOT LIKE '".$exclude_dir."%' "; - } - } - elseif ($only_dir) - { - $append .= " AND fls.directory LIKE '".$only_dir."%' "; - } - - if ($is_owner) - { - $sql = "SELECT DISTINCT sh.file_id as file_id, - sh.acl_rights as acl_rights, - fls.directory as directory, - fls.name as name, - fls.owner_id as owner_id - FROM phpgw_vfs2_shares as sh, - phpgw_vfs2_files as fls - INNER JOIN phpgw_vfs2_mimetypes mime on fls.mime_id = mime.mime_id - WHERE sh.file_id = fls.file_id - AND mime.mime = 'Directory' - AND fls.shared = 'Y' - $append - AND fls.owner_id = $account_id"; - } - else - { - //gets the id of all groups $account_id belongs to - $groups = $GLOBALS['phpgw']->accounts->membership($account_id); - - foreach($groups as $group) - { - $accounts[] = $group['account_id']; - } - - $accounts[] = $account_id; - - $sql = "SELECT DISTINCT sh.file_id as file_id, - sh.acl_rights as acl_rights, - fls.directory as directory, - fls.name as name, - fls.owner_id as owner_id - FROM phpgw_vfs2_shares as sh, - phpgw_vfs2_files as fls - INNER JOIN phpgw_vfs2_mimetypes mime on fls.mime_id = mime.mime_id - WHERE sh.file_id = fls.file_id - AND mime.mime = 'Directory' - AND sh.account_id IN (".implode(',',$accounts).") - AND fls.shared = 'Y' - $append - AND fls.owner_id != $account_id"; - } - - $this->db->query($sql,__LINE__,__FILE__); - - $res = array(); - while($this->db->next_record()) - { - if($this->db->Record['acl_rights'] & $permission) - { - $res[] = $this->db->Record; - } - } - - //should be returned the array with complete file description - return $res; - } - - /*! - * function search_shares - * @description Search for a shared folder which the user have - * $permission and have $keyword related (in directory or filename) - * @result array with the list of all shares - */ - //TODO search by file owner's name - function search_shares($account_id,$keyword,$permission=PHPGW_ACL_READ) - { - if ($account_id != ((int)$account_id)) - { - return false; - } - - //gets the id of all groups $account_id belongs to - $groups = $GLOBALS['phpgw']->accounts->membership($account_id); - - foreach($groups as $group) - { - $accounts[] = $group['account_id']; - } - - $accounts[] = $account_id; - - $sql = "SELECT DISTINCT sh.file_id as file_id, - sh.acl_rights as acl_rights, - fls.directory as directory, - fls.name as name, - fls.owner_id as owner_id - FROM phpgw_vfs2_shares as sh, - phpgw_vfs2_files as fls - WHERE sh.file_id = fls.file_id - AND sh.account_id IN (".implode(',',$accounts).") - AND ( fls.directory LIKE '%$keyword%' - OR fls.name LIKE '%$keyword%') - AND fls.shared = 'Y' - AND fls.owner_id != $account_id"; - - $this->db->query($sql,__LINE__,__FILE__); - - while($this->db->next_record()) - { - if ($this->db->Record['acl_rights'] & $permission) - { - $res[] = $this->db->Record; - } - } - return $res; - } - - /** - * Function: get_file_permissions - * - * Gets the permissions for a user in a given file For files in a - * shared dir, will get the acl rights of the parent dir, and if - * not specified, of the parent of the parent, and so on. NOTE: - * this consider that files CANNOT have permissions set, only - * their parent dir, and the file inherits the nearer parent with - * permissions defined (even if these permissions are NONE) - * - * @result int some mask of various PHPGW_ACL_* - */ - function get_file_permissions($account_id,$file_id) - { - //get directory/file names - $this->db->select('phpgw_vfs2_files','directory,name', - array('file_id' => $file_id),__LINE__,__FILE__); - - $this->db->next_record(); - - $directory = $this->db->Record['directory']; - $name = $this->db->Record['name']; - - $fullname = $directory.'/'.$name; - - $parent_dirs = array(); - - $dirs_expl = explode('/',$fullname); - - //put all parents hierarchy in an array - $parent_dirs_array[]=$fullname; - while(1) - { - array_pop($dirs_expl); - if($dirs_expl[1]) - { - $parent_dirs_array[]=implode('/',$dirs_expl); - } - else - { - $parent_dirs_array[]='/'; - break; - } - } - - //gets the id of all groups $account_id belongs to - $groups = $GLOBALS['phpgw']->accounts->membership($account_id); - - foreach($groups as $group) - { - $accounts[] = $group['account_id']; - } - - $accounts[] = $account_id; - $accounts[] = 0; //default permission for all users - - $accounts = implode(',',$accounts); - - //searches for information in the parent dirs - for($i=0; $idb->query($sql,__LINE__,__FILE__); - - if ($this->db->next_record()) - { - - $sql = "SELECT sh.acl_rights as acl_rights, - fls.directory as directory, - fls.name as name, - fls.owner_id as owner_id, - fls.shared as shared - FROM phpgw_vfs2_files as fls, - phpgw_vfs2_shares as sh - WHERE (sh.account_id IN ($accounts) - OR fls.owner_id = $account_id) - AND fls.file_id = sh.file_id - AND fls.directory = '".$parent_dirs_array[$i+1]."' - AND fls.name = '".$dir_name."' - AND fls.shared = 'Y'"; - - $this->db->query($sql,__LINE__,__FILE__); - - - /* - $this->db->select('phpgw_vfs2_files','file_id', - array('directory'=>$parent_dirs_array[$i+1], - 'name'=>$dir_name), __LINE__,__FILE__); - - $this->db->next_record(); - - $this->db->select('phpgw_vfs2_shares','acl_rights', - array('file_id'=>$this->db->Record['file_id'], - 'account_id'=>$account_id),__LINE__,__FILE__);*/ - - - - -// echo "tested file: ".$dir_name." \n
"; -// echo $sql."

\n\n"; - while ($this->db->next_record()) - { -// echo "results for file: ".$dir_name." \n
"; - if ($this->db->Record['owner_id'] == $account_id) - { - //the user can do anything with any dir or file - //inside a dir that belongs to him. - return PHPGW_ACL_READ|PHPGW_ACL_EDIT|PHPGW_ACL_ADD; - } - else - { - $entered = true; - $result |= $this->db->Record['acl_rights']; - } - } - if($entered) - { - return $result; - } - else - { - return 0; - } - } - } - } - return false; - } - - } - -?> diff --git a/phpgwapi/inc/class.vfs_sql2.inc.php b/phpgwapi/inc/class.vfs_sql2.inc.php deleted file mode 100644 index ebd9dc8fdc..0000000000 --- a/phpgwapi/inc/class.vfs_sql2.inc.php +++ /dev/null @@ -1,3923 +0,0 @@ - * - * This class handles file/dir access for eGroupWare * - * Copyright (C) 2001 Jason Wies, (C) 2004 Vinicius Cubas Brand * - * and (c) 2006 Benjamin Donnachie * - * -------------------------------------------------------------------------* - * This library is part of the eGroupWare API * - * http://www.egroupware.org/api * - * ------------------------------------------------------------------------ * - * This library is free software; you can redistribute it and/or modify it * - * under the terms of the GNU Lesser General Public License as published by * - * the Free Software Foundation; either version 2.1 of the License, * - * or any later version. * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU Lesser General Public License * - * along with this library; if not, write to the Free Software Foundation, * - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - \**************************************************************************/ - - /*! - @class vfs - @abstract Virtual File System with SQL backend - version 2 - @description Authors: Zone, viniciuscb - */ - - # viniciuscb 2004-09-06 Upgraded this class to the sql implementation v2. - - /* These are used in calls to extra_sql () */ - define ('DEFAULT_LOW_PERMS',0600); - - #upd viniciuscb 2004-09-06 Updated to the new database tables (the ones that - # match phpgw_vfs2*). I have created a class to handle mime types and one - # to handle the versioning system. - - #upd viniciuscb 2005-03-11 Deleted some garbage - - #upd Benjamin Donnachie 2006-01-09 - # Fixed function in_docroot so that it works with asyncservices - - /** - * Class: vfs - * - * Virtual File System class - SQL v.2 implementation - */ - class vfs extends vfs_shared - { - var $working_id; - var $working_lid; - var $meta_types; - var $now; - var $file_actions; - var $vfs_mimetypes; - var $vfs_versionsystem; - var $vfs_customfields; - var $vfs_sharing; - var $db; - var $db_hl; - var $appfiles_root; - - var $Debug; - - //other attributes may be in the custom fields.... - - var $attribute_tables = array( - 'file_id' => 'phpgw_vfs2_files', - 'owner_id' => 'phpgw_vfs2_files', - 'createdby_id' => 'phpgw_vfs2_files', - 'modifiedby_id' => 'phpgw_vfs2_files', - 'created' => 'phpgw_vfs2_files', - 'modified' => 'phpgw_vfs2_files', - 'size' => 'phpgw_vfs2_files', - 'mime_type' => 'phpgw_vfs2_mimetypes', - 'comment' => 'phpgw_vfs2_files', - 'app' => 'phpgw_vfs2_files', - 'directory' => 'phpgw_vfs2_files', - 'name' => 'phpgw_vfs2_files', - 'link_directory'=> 'phpgw_vfs2_files', - 'link_name' => 'phpgw_vfs2_files', - 'version' => 'phpgw_vfs2_files' - ); - - //to external use. - //if $custom_field_support is set, then this class have support to - //custom fields. - var $custom_field_support = 1; - - //if $search_support is set, then this class have support to - //searching in files for a particular value in a particular property. - var $search_support = 1; - - var $compress_support = 1; - var $extract_support = 1; - - - /*! - @function vfs - @abstract constructor, sets up variables - */ - function vfs () - { - - //just in case... this must change soon. - if (@$GLOBALS['phpgw_info']['flags']['currentapp']=='filemanager') - { - echo "FILEMANAGER UNTESTED WITH VFS2. ABORTED."; - $GLOBALS['phpgw']->common->phpgw_exit(); - } - - $this->db = clone($GLOBALS['phpgw']->db); - $this->db_hl =& $GLOBALS['phpgw']->db_hl; - - $this->vfs_shared (); - $this->basedir = $GLOBALS['phpgw_info']['server']['files_dir']; - $this->working_id = $GLOBALS['phpgw_info']['user']['account_id']; - $this->working_lid = $GLOBALS['phpgw']->accounts->id2name($this->working_id); - $this->now = date ('Y-m-d H:i:s'); - - - /* - File/dir attributes, each corresponding to a database field. - Useful for use in loops If an attribute was added to the table, - add it here and possibly add it to set_attributes () - - set_attributes now uses this array(). 07-Dec-01 skeeter - */ - - $this->attributes[] = 'deleteable'; - $this->attributes[] = 'content'; - $this->attributes[] = 'is_backup'; - $this->attributes[] = 'shared'; - $this->attributes[] = 'proper_id'; - - $this->attribute_tables['deleteable'] = 'phpgw_vfs2_files'; - $this->attribute_tables['content'] = 'phpgw_vfs2_files'; - $this->attribute_tables['is_backup'] = 'phpgw_vfs2_files'; - $this->attribute_tables['shared'] = 'phpgw_vfs2_files'; - $this->attribute_tables['proper_id'] = 'phpgw_vfs2_files'; - - /* - Decide whether to use any actual filesystem calls (fopen(), - fread(), unlink(), rmdir(), touch(), etc.). If not, then we're - working completely in the database. - */ - $this->file_actions = $GLOBALS['phpgw_info']['server']['file_store_contents'] == 'filesystem' || - !$GLOBALS['phpgw_info']['server']['file_store_contents']; - - // test if the files-dir is inside the document-root, and refuse - // working if so - if ($this->file_actions && $this->in_docroot($this->basedir)) - { - $GLOBALS['phpgw']->common->phpgw_header(); - if ($GLOBALS['phpgw_info']['flags']['noheader']) - { - echo parse_navbar(); - } - echo '

'.lang('Path to user and group files HAS TO BE OUTSIDE of the webservers document-root!!!')."

\n"; - $GLOBALS['phpgw']->common->phpgw_exit(); - } - - /* We store the linked directories in an array now, so we don't - * have to make the SQL call again */ - - - - - $this->linked_dirs = array (); - while ($GLOBALS['phpgw']->db->next_record ()) - { - $this->linked_dirs[] = $GLOBALS['phpgw']->db->Record; - } - - //set_vfs to use this very object (pass by reference) - $this->vfs_mimetypes =& CreateObject('phpgwapi.vfs_mimetypes',false); - $this->vfs_mimetypes->set_vfs($this); - - $this->vfs_versionsystem =& CreateObject('phpgwapi.vfs_versionsystem',false); - $this->vfs_versionsystem->set_vfs($this); - - $this->vfs_customfields =& CreateObject('phpgwapi.vfs_customfields'); - - $this->vfs_sharing =& CreateObject('phpgwapi.vfs_sharing'); - } - - /*! - @function in_docroot - @abstract test if $path lies within the webservers document-root - */ - function in_docroot($path) - { - $docroots = array(PHPGW_SERVER_ROOT,$_SERVER['DOCUMENT_ROOT']); - - foreach ($docroots as $docroot) - { - $len = strlen($docroot); - - if ($docroot != "" && $docroot == substr($path,0,$len)) - { - $rest = substr($path,$len); - - if (!strlen($rest) || $rest[0] == DIRECTORY_SEPARATOR) - { - return True; - } - } - } - return False; - } - - /*! - @function get_id_from_path - @abstract Given a Directory and file name, finds the correspondent - file_id - @param $directory string - @param $name string - @result int the file_id in repository - */ - function get_id_from_path($directory,$name) - { - $where = array( - 'directory' => $directory, - 'name' => $name - ); - - $this->db->select('phpgw_vfs2_files','file_id',$where, - __LINE__,__FILE__); - - if ($this->db->next_record()) - { - return $this->db->Record['file_id']; - } - - return false; - } - - //the inverse way of $this->get_id_from_path - function get_path_from_id($id) - { - $where = array( - 'file_id' => $id - ); - - $this->db->select('phpgw_vfs2_files','directory,name',$where, - __LINE__,__FILE__); - - if ($this->db->next_record()) - { - return $this->db->Record['directory'].'/'.$this->db->Record['name']; - } - - return false; - } - - /* - * See vfs_shared - */ - function get_journal ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT), - 'type' => False - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask) - ))) - { - return False; - } - - //find the file_id from a file based on directory and name - $file_id = $this->get_id_from_path($p->fake_leading_dirs_clean,$p->fake_name_clean); - - - if ($file_id === false) - { - return false; - } - return $this->vfs_versionsystem->get_journal($file_id); - } - - /* - * See vfs_shared - */ - function acl_check ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT), - 'operation' => PHPGW_ACL_READ, - 'must_exist' => False - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - /* Accommodate special situations */ - if ($this->override_acl || $data['relatives'][0] == RELATIVE_USER_APP || $GLOBALS['phpgw_info']['user']['apps']['admin']) - { - return True; - } - - if (!$data['owner_id']) - { - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - /* Temporary, until we get symlink type files set up */ - if ($p->outside) - { - return True; - } - - /* Read access is always allowed here, but nothing else is */ - if ($data['string'] == '/' || $data['string'] == $this->fakebase) - { - if ($data['operation'] == PHPGW_ACL_READ) - { - return True; - } - else - { - return False; - } - } - - /* If the file doesn't exist, we get ownership from the parent - * directory */ - if (!$this->file_exists (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask) - )) - ) - { - if ($data['must_exist']) - { - return False; - } - - $data['string'] = $p->fake_leading_dirs; - $p2 = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($p->mask) - ) - ); - - if (!$this->file_exists (array( - 'string' => $data['string'], - 'relatives' => array ($p->mask) - )) - ) - { - return False; - } - } - else - { - $p2 = $p; - } - /* - We don't use ls () to get owner_id as we normally would, - because ls () calls acl_check (), which would create an infinite loop - */ - $query = $GLOBALS['phpgw']->db->query ("SELECT owner_id FROM phpgw_vfs2_files WHERE directory='". - $GLOBALS['phpgw']->db->db_addslashes($p2->fake_leading_dirs_clean)."' AND name='". - $GLOBALS['phpgw']->db->db_addslashes($p2->fake_name_clean)."'", __LINE__, __FILE__); - $GLOBALS['phpgw']->db->next_record (); - - $owner_id = $GLOBALS['phpgw']->db->Record['owner_id']; - } - else - { - $owner_id = $data['owner_id']; - } - - /* This is correct. The ACL currently doesn't handle undefined values correctly */ - if (!$owner_id) - { - $owner_id = 0; - } - - $user_id = $GLOBALS['phpgw_info']['user']['account_id']; - - /* They always have access to their own files */ - if ($owner_id == $user_id) - { - return True; - } - - - #viniciuscb: Check if the file is inside a dir which is an application dir. - # If so, see if the dir has permissions in vfs_sharing. If not, - # inherit permissions given by the source application - - if ($this->is_appfolder($p2->fake_full_path)) - { - $file_id = $this->get_file_id(array( - 'string' => $p2->fake_full_path, - 'relatives' => array($p2->mask))); - - $rights = $this->vfs_sharing->get_file_permissions($GLOBALS['phpgw_info']['user']['account_id'],$file_id); - - if ($rights & $data['operation']) - { - return true; - } - - $exp_path = explode('/',$p2->fake_full_path); - $appname = $exp_path[2]; - $id = $exp_path[3]; - - //get hooks to know node permission - $resp = $GLOBALS['phpgw']->hooks->process(array( - 'location' => 'files_info', - 'account_id' => $GLOBALS['phpgw_info']['user']['account_id'] - )); - - return ($resp[$appname][$id]['permissions'] & $data['operation']); - } - - #viniciuscb: rethink the group files role and working schema - /* Check if they're in the group */ - $memberships = $GLOBALS['phpgw']->accounts->membership ($user_id); - - if (is_array ($memberships)) - { - foreach ($memberships as $group_array) - { - if ($owner_id == $group_array['account_id']) - { - $group_ok = 1; - break; - } - } - } - - $acl = CreateObject ('phpgwapi.acl', $owner_id); - $acl->account_id = $owner_id; - $acl->read_repository (); - - $file_id = $this->get_file_id(array( - 'string' => $p2->fake_full_path, - 'relatives' => array($p2->mask))); - - $rights = $this->vfs_sharing->get_file_permissions($user_id,$file_id); - - if ($this->Debug) - { - echo "
\nRIGHTS OF THE FILE ".$p2->fake_full_path." ARE=$rights
\n"; - } - - if ($rights & $data['operation']) - { - return True; - } - elseif (!$rights && $group_ok) - { - $conf =& CreateObject('phpgwapi.config', 'phpgwapi'); - $conf->read_repository(); - if ($conf->config_data['acl_default'] == 'grant') - { - return True; - } - else - { - return False; - } - } - else - { - return False; - } - } - - /* - * See vfs_shared - */ - function read ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'operation' => PHPGW_ACL_READ - )) - ) - { - return False; - } - - $conf =& CreateObject('phpgwapi.config', 'phpgwapi'); - $conf->read_repository(); - if ($this->file_actions || $p->outside) - { - if ($fp = fopen ($p->real_full_path, 'rb')) - { - $contents = fread ($fp, filesize ($p->real_full_path)); - fclose ($fp); - } - else - { - $contents = False; - } - } - else - { - $ls_array = $this->ls (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - ) - ); - - $contents = $ls_array[0]['content']; - } - - return $contents; - } - - /* - * See vfs_shared - */ - function write ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT), - 'content' => '' - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if ($this->file_exists (array ( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask) - )) - ) - { - $acl_operation = PHPGW_ACL_EDIT; - $journal_operation = VFS_OPERATION_EDITED; - } - else - { - $acl_operation = PHPGW_ACL_ADD; - } - - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'operation' => $acl_operation - )) - ) - { - return False; - } - - umask(0177); - - /* - * If 'string' doesn't exist, touch () creates both the file and - * the database entry If 'string' does exist, touch () sets the - * modification time and modified by - */ - $this->touch (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask) - ) - ); - - $conf =& CreateObject('phpgwapi.config', 'phpgwapi'); - $conf->read_repository(); - - - $file_id = $this->get_id_from_path($p->fake_leading_dirs_clean,$p->fake_name_clean); - - //Saves a snapshot in the journal - if ($journal_operation) - { - $this->vfs_versionsystem->save_snapshot($file_id,$journal_operation); - } - - if ($this->file_actions) - { - if ($fp = fopen ($p->real_full_path, 'wb')) - { - fwrite ($fp, $data['content'], strlen ($data['content'])); - fclose ($fp); - $write_ok = 1; - } - } - - if ($write_ok || !$this->file_actions) - { - - - if ($this->file_actions) - { - $set_attributes_array = array( - 'size' => filesize ($p->real_full_path) - ); - } - else - { - $set_attributes_array = array ( - 'size' => strlen ($data['content']), - 'content' => $data['content'] - ); - } - - if ($journal_operation) - { - $this->vfs_versionsystem->commit($file_id); - } - - - - $this->set_attributes (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'attributes' => $set_attributes_array - )); - - return True; - } - else - { - return False; - } - } - - /* - * See vfs_shared - */ - function touch ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array( - 'relatives' => array (RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $account_id = $GLOBALS['phpgw_info']['user']['account_id']; - $currentapp = $GLOBALS['phpgw_info']['flags']['currentapp']; - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - )); - - umask (0177); - - if ($this->file_actions) - { - /* - PHP's touch function will automatically decide whether to - create the file or set the modification time - */ - $rr = @touch ($p->real_full_path); - - if ($p->outside) - { - return $rr; - } - } - - /* We, however, have to decide this ourselves */ - if ($this->file_exists (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask) - )) - ) - { - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'operation' => PHPGW_ACL_EDIT - ))) - { - return False; - } - - $vr = $this->set_attributes (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'attributes' => array( - 'modifiedby_id' => $account_id, - 'modified' => $this->now - ) - ) - ); - } - else - { - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'operation' => PHPGW_ACL_ADD - )) - ) - { - return False; - } - - //TODO VCB insert other fields - - $insert_data = array( - 'owner_id' => $this->working_id, - 'directory' => $p->fake_leading_dirs_clean, - 'name' => $p->fake_name_clean - ); - - $query = $this->db->insert('phpgw_vfs2_files',$insert_data,$insert_data,__LINE__,__FILE__); - - $file_id = $this->get_id_from_path($p->fake_leading_dirs_clean,$p->fake_name_clean); - - $this->vfs_versionsystem->create_initial_version($file_id); - - $this->set_attributes(array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'attributes' => array ( - 'createdby_id' => $account_id, - 'created' => $this->now, - 'size' => 0, - 'deleteable' => 'Y', - 'app' => $currentapp - ) - ) - ); - - $this->correct_attributes (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask) - ) - ); - } - - if ($rr || $vr || $query) - { - return True; - } - else - { - return False; - } - } - - /* - * See vfs_shared - * If $data['symlink'] the file is symlinked instead of copied - */ - function cp ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT, RELATIVE_CURRENT), - 'journal' => true - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $account_id = $GLOBALS['phpgw_info']['user']['account_id']; - - $f = $this->path_parts (array( - 'string' => $data['from'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - $t = $this->path_parts (array( - 'string' => $data['to'], - 'relatives' => array ($data['relatives'][1]) - ) - ); - - if (!$this->acl_check (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask), - 'operation' => PHPGW_ACL_READ - )) - ) - { - trigger_error('vfs->cp: could not copy file from '.$f->fake_full_path.' to '.$t->fake_full_path.'. Without permission to read from source location. Line '.__LINE__.', File '.__FILE__,E_USER_NOTICE); - return False; - } - - if ($exists = $this->file_exists (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask) - )) - ) - { - if (!$this->acl_check (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask), - 'operation' => PHPGW_ACL_EDIT - )) - ) - { - trigger_error('vfs->cp: could not copy file from '.$f->fake_full_path.' to '.$t->fake_full_path.'. Without permission to edit destination. Line '.__LINE__.', File '.__FILE__,E_USER_NOTICE); - return False; - } - } - else - { - if (!$this->acl_check (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask), - 'operation' => PHPGW_ACL_ADD - )) - ) - { - - trigger_error('vfs->cp: could not copy file from '.$f->fake_full_path.' to '.$t->fake_full_path.'. Without permission to create new file. Line '.__LINE__.', File '.__FILE__,E_USER_NOTICE); - return False; - } - } - - umask(0177); - - if ($this->file_type (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask) - )) != 'Directory' - ) - { - if ($this->file_actions) - { - if (@$data['symlink']) - { - if ($exists) - { - @unlink($t->real_full_path); - } - if (!symlink($f->real_full_path, $t->real_full_path)) - { - trigger_error('vfs->cp: could not copy file from '.$f->fake_full_path.' to '.$t->fake_full_path.'. Without permission to create symbolic link. Line '.__LINE__.', File '.__FILE__,E_USER_NOTICE); - return False; - } - } - elseif (!copy ($f->real_full_path, $t->real_full_path)) - { - trigger_error('vfs->cp: could not copy file from '.$f->fake_full_path.' to '.$t->fake_full_path.'. Line '.__LINE__.', File '.__FILE__,E_USER_NOTICE); - return False; - } - - $size = filesize ($t->real_full_path); - } - else - { - $content = $this->read (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask) - ) - ); - - - $size = strlen ($content); - } - - if ($t->outside) - { - return True; - } - - $ls_array = $this->ls (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask), - 'checksubdirs' => False, - 'mime_type' => False, - 'nofiles' => True - ) - ); - $record = $ls_array[0]; - - if ($this->file_exists (array( - 'string' => $data['to'], - 'relatives' => array ($data['relatives'][1]) - )) - ) - { //Overwrite - -/* - $query = $GLOBALS['phpgw']->db->query ("UPDATE phpgw_vfs SET owner_id='$this->working_id', directory='". - $GLOBALS['phpgw']->db->db_addslashes($t->fake_leading_dirs_clean)."', name='". - $GLOBALS['phpgw']->db->db_addslashes($t->fake_name_clean)."' WHERE owner_id='$this->working_id' AND directory='". - $GLOBALS['phpgw']->db->db_addslashes($t->fake_leading_dirs_clean)."' AND name='". - $GLOBALS['phpgw']->db->db_addslashes($t->fake_name_clean)."'", __LINE__, __FILE__);*/ - - $ls_array_dest = $this->ls (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask), - 'checksubdirs' => False, - 'mime_type' => False, - 'nofiles' => True - ) - ); - $record_dest = $ls_array_dest[0]; - - $this->vfs_versionsystem->save_snapshot($record_dest['file_id'],VFS_OPERATION_EDITED,'Overwritten by copy of '.$f->fake_full_path_clean); - - $set_attributes_array = array ( - 'createdby_id' => $account_id, - 'created' => $this->now, - 'size' => $size, - 'mime_type' => $record['mime_type'], - 'deleteable' => $record['deleteable'], - 'comment' => $record['comment'], - 'app' => $record['app'] - ); - - if (!$this->file_actions) - { - $set_attributes_array['content'] = $content; - } - - $res = $this->set_attributes(array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask), - 'attributes' => $set_attributes_array - ) - ); - - if ($res) - $this->vfs_versionsystem->commit($record_dest['file_id']); - } - else //Create a new file - { - $this->touch (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask) - ) - ); - - $set_attributes_array = array ( - 'createdby_id' => $account_id, - 'created' => $this->now, - 'size' => $size, - 'mime_type' => $record['mime_type'], - 'deleteable' => $record['deleteable'], - 'comment' => $record['comment'], - 'app' => $record['app'] - ); - - if (!$this->file_actions) - { - $set_attributes_array['content'] = $content; - } - - $this->set_attributes(array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask), - 'attributes' => $set_attributes_array - ) - ); - } - $this->correct_attributes (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask) - ) - ); - } - else /* It's a directory */ - { - /* First, make the initial directory */ - $this->mkdir (array( - 'string' => $data['to'], - 'relatives' => array ($data['relatives'][1]) - ) - ); - - /* Next, we create all the directories below the initial directory */ - foreach($this->ls (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask), - 'checksubdirs' => True, - 'mime_type' => 'Directory' - )) as $entry) - { - $newdir = ereg_replace ("^$f->fake_full_path", "$t->fake_full_path", $entry['directory']); - $this->mkdir (array( - 'string' => $newdir.'/'.$entry['name'], - 'relatives' => array ($t->mask) - ) - ); - } - - /* Lastly, we copy the files over */ - foreach($this->ls (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask) - )) as $entry) - { - if ($entry['mime_type'] == 'Directory') - { - continue; - } - - $newdir = ereg_replace ("^$f->fake_full_path", "$t->fake_full_path", $entry['directory']); - $this->cp (array( - 'from' => "$entry[directory]/$entry[name]", - 'to' => "$newdir/$entry[name]", - 'relatives' => array ($f->mask, $t->mask) - ) - ); - } - } - - if (!$f->outside) - { - - $ls_array = $this->ls(array( - 'string' => $f->fake_full_path, - 'relatives' => $f->mask - )); - - $file = $ls_array[0]; - - $this->vfs_versionsystem->save_snapshot($file['file_id'],VFS_OPERATION_COPIED,'',array('dest' =>$t->fake_full_path)); - - $this->vfs_versionsystem->commit(); - - } - - return True; - } - - - /* - * See vfs_shared - */ - function mv ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT, RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $account_id = $GLOBALS['phpgw_info']['user']['account_id']; - - $f = $this->path_parts (array( - 'string' => $data['from'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - $t = $this->path_parts (array( - 'string' => $data['to'], - 'relatives' => array ($data['relatives'][1]) - ) - ); - - if ($f->fake_full_path == $t->fake_full_path) - { - return true; - } - - if (!$this->acl_check (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask), - 'operation' => PHPGW_ACL_READ - )) - || !$this->acl_check (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask), - 'operation' => PHPGW_ACL_DELETE - )) - ) - { - trigger_error('vfs->mv: could not move file from '.$f->fake_full_path.' to '.$t->fake_full_path.'. Not allowed to delete the file from its source location. Line '.__LINE__.', File '.__FILE__,E_USER_NOTICE); - return False; - } - - if (!$this->acl_check (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask), - 'operation' => PHPGW_ACL_ADD - )) - ) - { - trigger_error('vfs->mv: could not move file from '.$f->fake_full_path.' to '.$t->fake_full_path.'. Not allowed to add a file in destination location. Line '.__LINE__.', File '.__FILE__,E_USER_NOTICE); - return False; - } - - if ($this->file_exists (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask) - )) - ) - { - if (!$this->acl_check (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask), - 'operation' => PHPGW_ACL_EDIT - )) - ) - { - trigger_error('vfs->mv: could not move file from '.$f->fake_full_path.' to '.$t->fake_full_path.'. Not allowed to edit existent file in destination location. Line '.__LINE__.', File '.__FILE__,E_USER_NOTICE); - return False; - } - } - - umask (0177); - - /* We can't move directories into themselves */ - if (($this->file_type (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask) - ) == 'Directory')) - && ereg ("^$f->fake_full_path", $t->fake_full_path) - ) - { - if (($t->fake_full_path == $f->fake_full_path) || substr ($t->fake_full_path, strlen ($f->fake_full_path), 1) == '/') - { - trigger_error('vfs->mv: could not move file from '.$f->fake_full_path.' to '.$t->fake_full_path.'. Trying to write in invalid location. Line '.__LINE__.', File '.__FILE__,E_USER_NOTICE); - return False; - } - } - - if ($this->file_exists (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask) - )) - ) - { - - /* We get the listing now, because it will change after we update the database */ - $ls = $this->ls (array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask) - ) - ); - - //to the new version system. - $ls_fileonly = $this->ls(array( - 'string' => $f->fake_full_path, - 'relatives' => array ($f->mask), - 'checksudirs' => false, - 'nofiles' => true - )); - - - $this->vfs_versionsystem->save_snapshot( - $ls_fileonly[0]['file_id'],VFS_OPERATION_MOVED, - 'Moved from '.$f->fake_full_path.' to '.$t->fake_full_path, - array('dest' => $t->fake_full_path)); - - if ($this->file_exists (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask) - )) - ) - { - $this->rm (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask) - ) - ); - } - - /* - * We add the journal entry now, before we delete. This way - * the mime_type field will be updated to 'journal-deleted' - * when the file is actually deleted - */ - if (!$f->outside) - { - //add_journal was here - } - - /* - If the from file is outside, it won't have a database entry, - so we have to touch it and find the size - */ - if ($f->outside) - { - $size = filesize ($f->real_full_path); - - $this->touch (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask) - ) - ); - - $query = $GLOBALS['phpgw']->db->query ("UPDATE phpgw_vfs2_files SET size=$size WHERE directory='". - $GLOBALS['phpgw']->db->db_addslashes($t->fake_leading_dirs_clean)."' AND name='". - $GLOBALS['phpgw']->db->db_addslashes($t->fake_name_clean)."'", __LINE__, __FILE__); - } - elseif (!$t->outside) - { - - $query = $GLOBALS['phpgw']->db->query ("UPDATE phpgw_vfs2_files SET name='". - $GLOBALS['phpgw']->db->db_addslashes($t->fake_name_clean)."', directory='". - $GLOBALS['phpgw']->db->db_addslashes($t->fake_leading_dirs_clean)."' WHERE directory='". - $GLOBALS['phpgw']->db->db_addslashes($f->fake_leading_dirs_clean)."' AND name='". - $GLOBALS['phpgw']->db->db_addslashes($f->fake_name_clean)."'", __LINE__, __FILE__); - } - - -/* $this->set_attributes(array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask), - 'attributes' => array ( - 'modifiedby_id' => $account_id, - 'modified' => $this->now - ) - ) - );*/ - -/* $this->correct_attributes (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask) - ) - );*/ - - if ($this->file_actions) - { - if(file_exists($t->real_full_path)) - { - unlink($t->real_full_path); - $ok = rename($f->real_full_path, $t->real_full_path); - } - else - { - $ok = rename($f->real_full_path, $t->real_full_path); - } - - if (!$ok) - { - return false; - } - - if (is_dir($t->real_full_path) && $f->outside) - { - $this->update_real(array( - 'string' => $t->fake_full_path, - 'relatives' => array($t->mask) - )); - - } - - //$rr = rename ($f->real_full_path, $t->real_full_path); - } - - /* - This removes the original entry from the database The actual - file is already deleted because of the rename () above - */ - if ($t->outside) - { - $this->rm (array( - 'string' => $f->fake_full_path, - 'relatives' => array($f->mask) - ) - ); - } - - } - else - { - trigger_error('vfs->mv: could not move file from '.$f->fake_full_path.' to '.$t->fake_full_path.'. Source file not found. Line '.__LINE__.', File '.__FILE__,E_USER_NOTICE); - return False; - } - - if ($this->file_type (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask) - )) == 'Directory' - ) - { - /* We got $ls from above, before we renamed the directory */ - foreach ($ls as $entry) - { - $newdir = ereg_replace ("^$f->fake_full_path", $t->fake_full_path, $entry['directory']); - $newdir_clean = $this->clean_string (array ('string' => $newdir)); - - $query = $GLOBALS['phpgw']->db->query ("UPDATE phpgw_vfs2_files SET directory='". - $GLOBALS['phpgw']->db->db_addslashes($newdir_clean)."' WHERE file_id='$entry[file_id]'", - __LINE__, __FILE__); - $this->correct_attributes (array( - 'string' => "$newdir/$entry[name]", - 'relatives' => array ($t->mask) - ) - ); - } - - } - - - $this->vfs_versionsystem->commit($ls_fileonly[0]['file_id']); - -/* $this->add_journal (array( - 'string' => $t->fake_full_path, - 'relatives' => array ($t->mask), - 'operation' => VFS_OPERATION_MOVED, - 'state_one' => $f->fake_full_path, - 'state_two' => $t->fake_full_path - ) - );*/ - return True; - } - - /* - * See vfs_shared - */ - function rm ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'operation' => PHPGW_ACL_DELETE - )) - ) - { - return False; - } - - if (!$this->file_exists (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - )) - ) - { - if ($this->file_actions) - { - $rr = unlink ($p->real_full_path); - } - else - { - $rr = True; - } - - if ($rr) - { - return True; - } - else - { - return False; - } - } - - if ($this->file_type (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - )) != 'Directory' - ) - { - $ls_array = $this->ls(array( - 'string' => $p->fake_full_path_clean, - 'relatives' => $p->mask - )); - - $file = $ls_array[0]; - - $this->vfs_versionsystem->save_snapshot($file['file_id'],VFS_OPERATION_DELETED); - - $query = $GLOBALS['phpgw']->db->query ("DELETE FROM phpgw_vfs2_files WHERE directory='". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_leading_dirs_clean)."' AND name='". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_name_clean)."'", __LINE__, __FILE__); - - if ($query) - $this->vfs_versionsystem->commit($file['file_id']); - - if ($this->file_actions) - { - $rr = unlink ($p->real_full_path); - } - else - { - $rr = True; - } - - if ($query || $rr) - { - return True; - } - else - { - return False; - } - } - else - { - $ls = $this->ls (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask) - ) - ); - - /* First, we cycle through the entries and delete the files */ - foreach($ls as $entry) - { - if ($entry['mime_type'] == 'Directory') - { - continue; - } - - $this->rm (array( - 'string' => "$entry[directory]/$entry[name]", - 'relatives' => array ($p->mask) - ) - ); - } - - /* Now we cycle through again and delete the directories */ - foreach ($ls as $entry) - { - if ($entry['mime_type'] != 'Directory') - { - continue; - } - - /* Only the best in confusing recursion */ - $this->rm (array( - 'string' => "$entry[directory]/$entry[name]", - 'relatives' => array ($p->mask) - ) - ); - } - - /* If the directory is linked, we delete the placeholder directory */ - $ls_array = $this->ls (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'checksubdirs' => False, - 'mime_type' => False, - 'nofiles' => True - ) - ); - $link_info = $ls_array[0]; - - if ($link_info['link_directory'] && $link_info['link_name']) - { - $path = $this->path_parts (array( - 'string' => $link_info['directory'] . '/' . $link_info['name'], - 'relatives' => array ($p->mask), - 'nolinks' => True - ) - ); - - if ($this->file_actions) - { - rmdir ($path->real_full_path); - } - } - - $file = $link_info; - - $this->vfs_versionsystem->save_snapshot($file['file_id'],VFS_OPERATION_DELETED); - - $query = $GLOBALS['phpgw']->db->query ("DELETE FROM phpgw_vfs2_files WHERE directory='". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_leading_dirs_clean)."' AND name='". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_name_clean)."'", - __LINE__, __FILE__); - - if ($query) - $this->vfs_versionsystem->commit(); - - if ($this->file_actions) - { - rmdir ($p->real_full_path); - } - - return True; - } - } - - /* - * See vfs_shared - */ - function mkdir ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $account_id = $GLOBALS['phpgw_info']['user']['account_id']; - $currentapp = $GLOBALS['phpgw_info']['flags']['currentapp']; - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'operation' => PHPGW_ACL_ADD) - ) - ) - { - echo "can't create dir ".$p->fake_full_path." due to permissions."; - return False; - } - - /* We don't allow /'s in dir names, of course */ - if (ereg ("/", $p->fake_name)) - { - return False; - } - - umask (077); - - if ($this->file_actions) - { - if (!@is_dir($p->real_leading_dirs_clean)) // eg. /home or /group does not exist - { - if (!ereg_replace('^/','',$p->fake_leading_dirs)) - { - return false; - } - if (!@$this->mkdir(array( - 'string' => $p->fake_leading_dirs, - 'relatives' => array(RELATIVE_NONE) ))) // ==> create it - { - return False; - } - } - - if (@is_dir($p->real_full_path)) // directory already exists - { - //WITH Serious BUG when registrys are in database, but not - //in filesystem. Correct this ASAP. - //$this->update_real($data,True); // update its contents - } - elseif (!@mkdir ($p->real_full_path, 0770)) - { - return False; - } - } - - if (!$this->file_exists (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask) - )) - ) - { - $query = $GLOBALS['phpgw']->db->query ("INSERT INTO phpgw_vfs2_files (owner_id, name, directory) VALUES ($this->working_id, '". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_name_clean)."', '". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_leading_dirs_clean)."')", __LINE__, __FILE__); - - $this->set_attributes(array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'attributes' => array ( - 'createdby_id' => $account_id, - 'size' => 4096, - 'mime_type' => 'Directory', - 'created' => $this->now, - 'deleteable' => 'Y', - 'app' => $currentapp - ) - ) - ); - - $this->correct_attributes (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask) - ) - ); - - //Get info to the versionsystem - $res = $this->ls(array( - 'string' => $p->fake_full_path_clean, - 'relatives' => $p->mask - )); - - $file = $res[0]; - - $this->vfs_versionsystem->create_initial_version($file['file_id']); - - - } - else - { - return False; - } - - return True; - } - - /* - * See vfs_shared - */ - function make_link ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT, RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $account_id = $GLOBALS['phpgw_info']['user']['account_id']; - $currentapp = $GLOBALS['phpgw_info']['flags']['currentapp']; - - $vp = $this->path_parts (array( - 'string' => $data['vdir'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - $rp = $this->path_parts (array( - 'string' => $data['rdir'], - 'relatives' => array ($data['relatives'][1]) - ) - ); - - if (!$this->acl_check (array( - 'string' => $vp->fake_full_path, - 'relatives' => array ($vp->mask), - 'operation' => PHPGW_ACL_ADD - )) - ) - { - return False; - } - - - if ((!$this->file_exists (array( - 'string' => $rp->real_full_path, - 'relatives' => array ($rp->mask) - ))) - && !mkdir ($rp->real_full_path, 0770)) - { - return False; - } - - if (!$this->mkdir (array( - 'string' => $vp->fake_full_path, - 'relatives' => array ($vp->mask) - )) - ) - { - return False; - } - - $size = $this->get_size (array( - 'string' => $rp->real_full_path, - 'relatives' => array ($rp->mask) - ) - ); - - $this->set_attributes(array( - 'string' => $vp->fake_full_path, - 'relatives' => array ($vp->mask), - 'attributes' => array ( - 'link_directory' => $rp->real_leading_dirs, - 'link_name' => $rp->real_name, - 'size' => $size - ) - ) - ); - - $this->correct_attributes (array( - 'string' => $vp->fake_full_path, - 'relatives' => array ($vp->mask) - ) - ); - - return True; - } - - /* - * See vfs_shared - */ - //upd 2004-09-16 viniciuscb: custom fields support - //upd 2004-10-11 viniciuscb: proper_id for file: accepts: - // $data['proper_id'], for an all-ready proper id, else - // $data['prefix'] for a string with the prefix - // (this can only be used if no proper_id - // specified now or before) - // $data['ptype'] For a specification of file type - // $data['prefix_type'] (FUTURE) - // if none specified, prefix will be user_lid - function set_attributes ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT), - 'attributes' => array () - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - /* - * This is kind of trivial, given that set_attributes () can change - * owner_id, size, etc. - */ - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'operation' => PHPGW_ACL_EDIT - )) - ) - { - return False; - } - - if (!$this->file_exists (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - )) - ) - { - return False; - } - - /* - * All this voodoo just decides which attributes to update - * depending on if the attribute was supplied in the 'attributes' - * array - */ - - $ls_array = $this->ls (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'checksubdirs' => False, - 'nofiles' => True - ) - ); - $record = $ls_array[0]; - - //handles mime type - - /* FIXME is mime_type is application/octet-stream, don't believe - * in passed mime_type and try to find a mime type based in - * extension */ - /* TODO use mime magic capabilities */ - $mime_id = ''; - if ($data['attributes']['mime_type'] && $data['attributes']['mime_type'] != 'application/octet-stream') - { - $mime_data = array ( - 'mime' => $data['attributes']['mime_type'], - 'extension' => @$this->get_file_extension($data['string']) - ); - - if (!$type = $this->vfs_mimetypes->get_type($mime_data)) - { - $type = $this->vfs_mimetypes->add_filetype($mime_data); - } - } - //try to find a compatible mime/type based in file extension - else - { - $mime_data = array ( - 'extension' => @$this->get_file_extension($data['string']) - ); - - if (!$type = $this->vfs_mimetypes->get_type($mime_data)) - { - $type = $this->vfs_mimetypes->add_filetype($mime_data); - - } - - /* Finally if the file has no extension and no mime (or mime - * defined as application/octet-stream, will consider file type - * as application/octet-stream - */ - if (!$type) - { - $type = $this->vfs_mimetypes->get_type(array( - 'mime' => 'application/octet-stream' - )); - } - - } - - //will only change mime_type if mime_type was specified in attribts - if ($data['attributes']['mime_type']) - { - unset($data['attributes']['mime_type']); - $data['attributes']['mime_id'] = $type['mime_id']; - } - - /* - Indicate that the EDITED_COMMENT operation needs to be journaled, - but only if the comment changed - */ - if (array_key_exists('comment',$data['attributes']) && - $data['attributes']['comment'] != $record['comment']) - { - $edited_comment = 1; - } - - #** proper id treating ** - - #1.User does not specified proper_id, and file had not any proper id - #generates a new proper_id - if(!$data['attributes']['proper_id'] && $data['attributes']['prefix']) - { - $prefix = $data['attributes']['prefix']; - -// $data['attributes']['proper_id'] = $this->generate_proper_id($data['attributes']['prefix'],$type['proper_id']); - $data['attributes']['proper_id'] = $this->generate_proper_id($data['attributes']['prefix'],$data['attributes']['ptype']); - } - #2.User specified proper_id - #check if this id is not being used. If it is, do not change. - elseif ($data['attributes']['proper_id']) - { - $this->db->select('phpgw_vfs2_files','proper_id',array('proper_id'=>$data['attributes']['proper_id'])); - - if ($this->db->next_record()) - { - unset($data['attributes']['proper_id']); - } - - } - - //To be sure that olny fields from phpgw_vfs2_files will be inserted - $update_data = array(); - foreach ($data['attributes'] as $key => $val) - { - if ($this->attribute_tables[$key] == 'phpgw_vfs2_files' || $key == 'mime_id') - $update_data[$key] = $val; - } - - $where = array( - 'file_id' => $record['file_id'] - ); - - if ($edited_comment) - { - $this->vfs_versionsystem->save_snapshot($record['file_id'], - VFS_OPERATION_EDITED_COMMENT); - } - - if (count($update_data)) //if false, there is nothing to do - { - $res = $this->db->update('phpgw_vfs2_files',$update_data,$where, - __LINE__,__FILE__); - - if ($res) - { - //custom fields storing - $customfields = $this->vfs_customfields->get_customfields('customfield_name'); - foreach ($customfields as $custom_name => $custom_val) - { - if (array_key_exists($custom_name,$data['attributes'])) - { - $store_array[$record['file_id']][$custom_name] = $data['attributes'][$custom_name]; - - } - } - - if ($store_array) - { - $this->vfs_customfields->store_fields($store_array); - } - - if ($edited_comment) - { - $this->vfs_versionsystem->commit($record['file_id']); - } - return True; - } - } - return false; - } - - /*! - @function correct_attributes - @abstract Set the correct attributes for 'string' (e.g. owner) - @param string File/directory to correct attributes of - @param relatives Relativity array - @result Boolean True/False - */ - function correct_attributes ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if ($p->fake_leading_dirs != $this->fakebase && $p->fake_leading_dirs != '/') - { - $ls_array = $this->ls (array( - 'string' => $p->fake_leading_dirs, - 'relatives' => array ($p->mask), - 'checksubdirs' => False, - 'nofiles' => True - ) - ); - $set_attributes_array = Array( - 'owner_id' => $ls_array[0]['owner_id'] - ); - } - elseif (preg_match ("+^$this->fakebase\/(.*)$+U", $p->fake_full_path, $matches)) - { - $set_attributes_array = Array( - 'owner_id' => $GLOBALS['phpgw']->accounts->name2id ($matches[1]) - ); - } - else - { - $set_attributes_array = Array( - 'owner_id' => 0 - ); - } - - $this->set_attributes (array( - 'string' => $p->fake_full_name, - 'relatives' => array ($p->mask), - 'attributes' => $set_attributes_array - ) - ); - - return True; - } - - /* - * See vfs_shared - */ - function file_type ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'operation' => PHPGW_ACL_READ, - 'must_exist' => True - )) - ) - { - return False; - } - - if ($p->outside) - { - if (is_dir ($p->real_full_path)) - { - return ('Directory'); - } - - /* - We don't return an empty string here, because it may still - match with a database query because of linked directories - */ - } - - /* - We don't use ls () because it calls file_type () to determine if - it has been passed a directory - */ - - //TODO VCB change this also with filetypes class - - $db2 = $GLOBALS['phpgw']->db; - - $db2->query ("SELECT mime_id - FROM phpgw_vfs2_files - WHERE directory='".$db2->db_addslashes($p->fake_leading_dirs_clean)."' - AND name='".$db2->db_addslashes($p->fake_name_clean)."'", __LINE__, __FILE__); - $db2->next_record (); - - $file_record = $db2->Record; - - $mime = $this->vfs_mimetypes->get_type(array( - 'mime_id' => $file_record['mime_id'] - )); - - $mime_type = $mime['mime']; - - if(!$mime_type) - { - $extension = $this->get_file_extension($p->fake_name_clean); - - if (!$res = $this->vfs_mimetypes->get_type(array( - 'extension' => $extension)) ) - { - $res = $this->vfs_mimetypes->add_filetype(array( - 'extension' => $extension)); - - if ($res) - { - $this->db->update('phpgw_vfs2_files', - array('mime_id' => $res['mime_id']), - array('directory' => $p->fake_leading_dirs_clean, - 'name' => $p->fake_name_clean - ),__LINE__,__FILE__); - } - - } - $mime_type = $res['mime']; - - } - - return $mime_type; - } - - /* - * See vfs_shared - */ - function file_exists ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT), - 'allow_outside' => true - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if ($p->outside) - { - if (!$data['allow_outside']) - { - return false; - } - $rr = file_exists ($p->real_full_path); - - return $rr; - } - - //TODO id: primary field - $db2 =& $GLOBALS['phpgw']->db; - $db2->query ("SELECT name FROM phpgw_vfs2_files WHERE directory='". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_leading_dirs_clean)."' AND name='". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_name_clean)."'", __LINE__, __FILE__); - - if ($db2->num_rows()) - { - return True; - } - else - { - return False; - } - } - - /* - * See vfs_shared - */ - function get_size ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT), - 'checksubdirs' => True - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'operation' => PHPGW_ACL_READ, - 'must_exist' => True - )) - ) - { - return False; - } - - /* - WIP - this should run through all of the subfiles/directories in the directory and tally up - their sizes. Should modify ls () to be able to return a list for files outside the virtual root - */ - if ($p->outside) - { - $size = filesize ($p->real_full_path); - - return $size; - } - - foreach($this->ls (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'checksubdirs' => $data['checksubdirs'], - 'nofiles' => !$data['checksubdirs'] - )) as $file_array) - { - /* - Make sure the file is in the directory we want, and not - some deeper nested directory with a similar name - */ -/* - if (@!ereg ('^' . $file_array['directory'], $p->fake_full_path)) - { - continue; - } -*/ - - $size += $file_array['size']; - } - - //TODO VCB update this when id be primary key - if ($data['checksubdirs']) - { - $query = $GLOBALS['phpgw']->db->query ("SELECT size FROM phpgw_vfs2_files WHERE directory='". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_leading_dirs_clean)."' AND name='". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_name_clean)."'",__LINE__,__FILE__); - $GLOBALS['phpgw']->db->next_record (); - $size += $GLOBALS['phpgw']->db->Record[0]; - } - - return $size; - } - - /*! - @function checkperms - @abstract Check if $this->working_id has write access to create files in $dir - @discussion Simple call to acl_check - @param string Directory to check access of - @param relatives Relativity array - @result Boolean True/False - */ - function checkperms ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if (!$this->acl_check (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask), - 'operation' => PHPGW_ACL_ADD - )) - ) - { - return False; - } - else - { - return True; - } - } - - /* - * See vfs_shared - * If $data['readlink'] then a readlink is tryed on the real file - * If $data['file_id'] then the file_id is used instead of a path - */ - //upd 2004-09-16 viniciuscb: Support for custom fields - function ls ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT), - 'checksubdirs' => True, - 'mime_type' => False, - 'nofiles' => False, - 'orderby' => 'directory,name', - 'backups' => false, /* show or hide backups */ - 'files_specified' => array(), - 'allow_outside' => true, - 'modifiedby_information' => false - ); - - //check if orderby is a valid field (or is composed by valid fields) - //this prevents a sql error that happens when sort field is invalid. - if ($data['orderby']) - { - $fields = explode(',',$data['orderby']); - foreach ($fields as $field_name) - { - if ($this->attribute_tables[trim($field_name)] != 'phpgw_vfs2_files') - { - unset($data['orderby']); - break; - } - } - } - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - $dir = $p->fake_full_path; - - //Abiliy to show or not backup files -> put it in sql queries - $sql_backups = ($data['backups']) ? '' : ' AND is_backup=\'N\' '; - - - /* If they pass us a file or 'nofiles' is set, return the info for $dir only */ - if (@$data['file_id'] - || ((($type = $this->file_type (array( - 'string' => $dir, - 'relatives' => array ($p->mask) - )) != 'Directory')) - || ($data['nofiles'])) && !$p->outside - ) - { - - /* SELECT all, the, attributes */ - $sql = 'SELECT '; - - foreach ($this->attributes as $num => $attribute) - { - if ($this->attribute_tables[$attribute] == 'phpgw_vfs2_files') - { - if ($num) - { - $sql .= ', '; - } - - $sql .= $attribute; - } - } - - $sql .= ",mime_id,is_backup FROM phpgw_vfs2_files WHERE "; - - - if (@$data['file_id']) - { - $sql .= 'file_id='.(int)$data['file_id'].$sql_backups; - } - else - { - $sql .= "directory='".$GLOBALS['phpgw']->db->db_addslashes($p->fake_leading_dirs_clean). - "' AND name='".$GLOBALS['phpgw']->db->db_addslashes($p->fake_name_clean)."'".$sql_backups; - } - -// echo " select1: dir=".$p->fake_leading_dirs_clean." name=".$p->fake_name_clean."
\n"; - $query = $GLOBALS['phpgw']->db->query ($sql, __LINE__, __FILE__); - - $GLOBALS['phpgw']->db->next_record (); - $record = $GLOBALS['phpgw']->db->Record; - - if (!$record) - { - return array(); - } - - /* We return an array of one array to maintain the standard */ - $rarray = array (); - foreach($this->attributes as $attribute) - { - switch ($attribute) - { - - case 'mime_type': - if (!is_numeric($record['mime_id'])) - { - //no mime type registered for file, must find one and if not exist add one. - $extension = $this->get_file_extension($record['name']); - - if (!$res = $this->vfs_mimetypes->get_type(array('extension' => $extension))) - { - $res = $this->vfs_mimetypes->add_filetype(array('extension' => $extension)); - } - - if ($res) - { - $this->db->update('phpgw_vfs2_files', - array('mime_id' => $res['mime_id']), - array('directory' => $p->fake_leading_dirs_clean, - 'name' => $p->fake_name_clean - ),__LINE__,__FILE__); - - } - } - else - { - $res = $this->vfs_mimetypes->get_type(array( - 'mime_id' => $record['mime_id'] - )); - } - - $record['mime_type'] = $res['mime']; - $record['mime_friendly'] = $res['friendly']; - break; - case 'created': - case 'modified': - $record[$attribute] = $this->db->from_timestamp($record[$attribute]); - break; - } - - - $rarray[0][$attribute] = $record[$attribute]; - } - if ($this->file_actions && @$data['readlink']) // test if file is a symlink and get it's target - { - $rarray[0]['symlink'] = @readlink($p->real_full_path); - } - - //handle custom fields - reset($rarray); - while(list($key,$val) = each($rarray)) - { - $custom =& $this->vfs_customfields->get_fields_by_fileid($val['file_id']); - - if ($custom) - { - $rarray[$key] = array_merge($val,$custom); - } - } - - return $rarray; - } - - //WIP - this should recurse using the same options the virtual part of ls () does - /* If $dir is outside the virutal root, we have to check the file system manually */ - if ($p->outside) - { - if (!$data['allow_outside']) - { - return false; - } - - if ($this->file_type (array( - 'string' => $p->fake_full_path, - 'relatives' => array ($p->mask) - )) == 'Directory' - && !$data['nofiles'] - ) - { - $dir_handle = opendir ($p->real_full_path); - while ($filename = readdir ($dir_handle)) - { - if ($filename == '.' || $filename == '..') - { - continue; - } - - $rarray[] = $this->get_real_info (array( - 'string' => $p->real_full_path . SEP . $filename, - 'relatives' => array ($p->mask) - ) - ); - } - } - else - { - $rarray[] = $this->get_real_info (array( - 'string' => $p->real_full_path, - 'relatives' => array ($p->mask) - ) - ); - } - - //handle custom fields - reset($rarray); - while(list($key,$val) = each($rarray)) - { - $custom =& $this->vfs_customfields->get_fields_by_fileid($val['file_id']); - - if ($custom) - { - $rarray[$key] = array_merge($val,$custom); - } - } - - return $rarray; - } - - /* $dir's not a file, is inside the virtual root, and they want to check subdirs */ - /* SELECT all, the, attributes FROM phpgw_vfs WHERE file=$dir */ - -// echo "DIR_CLEAN: ".$dir_clean."
"; - - $dir_clean = $this->clean_string (array ('string' => $dir)); - - - //This query must be fast and only bring things with the correct - //permissions. So, I'll get the list of all groups the current user - //belongs, get the list of the current dir and all parents over it - //and pass all these things in one query. - - //gets the id of all groups $account_id belongs to - $groups = $GLOBALS['phpgw']->accounts->membership($GLOBALS['phpgw_info']['user']['account_id']); - - foreach($groups as $group) - { - $accounts[] = $group['account_id']; - } - - $accounts[] = $GLOBALS['phpgw_info']['user']['account_id']; - $accounts[] = 0; //default permission for all users - - $paths = array(); - - $dir_exploded = explode('/',$dir_clean); - $dir_parts = count($dir_parts); - - for ($i=$dir_parts-1;$i>=0;$i--) - { - $res = implode('/',array_slice($dir_explode,0,$i)); - $paths[] = "'".($res) ? $res : '/'."'"; - } - - if (!$data['backups']) - { - $append .= " AND fls.is_backup = 'N'"; - } - - - if ($data['mime_type']) - { - $other_where .= " AND mime.mime = '".$data['mime_type']."'"; - $mime_join = ' INNER JOIN phpgw_vfs2_mimetypes mime ON fls.mime_id = mime.mime_id'; - } - - //orderby - $orderby = explode(',',$data['orderby']); - - foreach($orderby as $key =>$orderby_instance) - { - $orderby[$key] = 'fls.'.$orderby_instance; - } - - - $append .= ' ORDER BY '.implode(',',$orderby); - - $dir_rule = $data['checksubdirs'] ? "fls.directory LIKE '".$dir_clean."%'" : "fls.directory = '".$dir_clean."'"; - //SQL to get all files in current dir, except those ones that user - //does not have permission to see - $sql = "SELECT DISTINCT fls.* - FROM phpgw_vfs2_files fls - $mime_join - LEFT JOIN phpgw_vfs2_shares sh ON fls.file_id = sh.file_id - WHERE ".$dir_rule." AND - ( (sh.account_id in (".implode(',',$accounts).") AND fls.shared = 'Y') OR - (sh.account_id is NULL AND fls.shared = 'N') OR - fls.owner_id = ".$GLOBALS['phpgw_info']['user']['account_id']." ) - $other_where $append"; - - -// echo "\n$sql\n"; - - $query = $GLOBALS['phpgw']->db->query ($sql, __LINE__, __FILE__); - - $rarray = array (); - for ($i = 0; $GLOBALS['phpgw']->db->next_record (); $i++) - { - $record = $GLOBALS['phpgw']->db->Record; - - - /* Further checking on the directory. This makes sure /home/user/test won't match /home/user/test22 */ - if (@!ereg ("^$dir(/|$)", $record['directory'])) - { - continue; - } - - /* If they want only this directory, then $dir should end without a trailing / */ - if (!$data['checksubdirs'] && ereg ("^$dir/", $record['directory'])) - { - continue; - } - - foreach($this->attributes as $attribute) - { - switch($attribute) - { - case 'mime_type': - if (!is_numeric($record['mime_id'])) - { - $extension = $this->get_file_extension($record['name']); - if(!$res = $this->vfs_mimetypes->get_type(array( - 'extension' => $extension)) ) - { - $res = $this->vfs_mimetypes->add_filetype(array( - 'extension' - )); - - if ($res) - { - $this->db->update('phpgw_vfs2_files', - array('mime_id' => $res['mime_id']), - array('directory' => $p->fake_leading_dirs_clean, - 'name' => $p->fake_name_clean - ),__LINE__,__FILE__); - } - - } - } - else - { - $res = $this->vfs_mimetypes->get_type(array( - 'mime_id' => $record['mime_id'] - )); - } - - $record['mime_type'] = $res['mime']; - $rarray[$i]['mime_friendly'] = $res['friendly']; - break; - case 'created': - case 'modified': - $record[$attribute] = $this->db->from_timestamp($record[$attribute]); - break; - } - - $rarray[$i][$attribute] = $record[$attribute]; - } - } - - //handle custom fields - reset($rarray); - while(list($key,$val) = each($rarray)) - { - $custom =& $this->vfs_customfields->get_fields_by_fileid($val['file_id']); - - if ($custom) - { - $rarray[$key] = array_merge($val,$custom); - } - } - - return $rarray; - } - - /* - * See vfs_shared - */ - function update_real ($data,$recursive = False) - { - //FIXME this method does not work when there are registrys in - //database, but not in filesystem. It starts corromping the - //database by putting wrong things that are in the partition root. - //return false; - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if (file_exists ($p->real_full_path)) - { - if (is_dir ($p->real_full_path)) - { - $dir_handle = opendir ($p->real_full_path); - while ($filename = readdir ($dir_handle)) - { - if ($filename == '.' || $filename == '..') - { - continue; - } - - $rarray[] = $this->get_real_info (array( - 'string' => $p->fake_full_path . '/' . $filename, - 'relatives' => array (RELATIVE_NONE) - ) - ); - } - } - else - { - $rarray[] = $this->get_real_info (array( - 'string' => $p->fake_full_path, - 'relatives' => array (RELATIVE_NONE) - ) - ); - } - - if (!is_array ($rarray)) - { - $rarray = array (); - } - - foreach($rarray as $num => $file_array) - { - $p2 = $this->path_parts (array( - 'string' => $file_array['directory'] . '/' . $file_array['name'], - 'relatives' => array (RELATIVE_NONE) - ) - ); - - /* Note the mime_type. This can be "Directory", which is - * how we create directories */ - $set_attributes_array = Array( - 'size' => $file_array['size'], - 'mime_type' => $file_array['mime_type'] - ); - - if (!$this->file_exists (array( - 'string' => $p2->fake_full_path, - 'relatives' => array (RELATIVE_NONE) - )) - ) - { - $this->touch (array( - 'string' => $p2->fake_full_path, - 'relatives' => array (RELATIVE_NONE) - ) - ); - } - $this->set_attributes (array( - 'string' => $p2->fake_full_path, - 'relatives' => array (RELATIVE_NONE), - 'attributes' => $set_attributes_array - ) - ); - if ($recursive && $file_array['mime_type'] == 'Directory') - { - $dir_data = $data; - $dir_data['string'] = $file_array['directory'] . '/' . $file_array['name']; - $this->update_real($dir_data,$recursive); - } - } - } - } - - /*! - * @function regenerate_database - * @abstract This function regenerates the full database. It is like - * the function update_real, but instead, it works for all files in a - * folder, fixing all broken regs in a database (if it exists), or - * recreating it. - * @author Vinicius Cubas Brand - */ - function regenerate_database() - { - - } - - /* Helper functions */ - - /* This fetchs all available file system information for string (not using the database) */ - function get_real_info ($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT) - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - if (is_dir ($p->real_full_path)) - { - $mime_type = 'Directory'; - } - else - { - $mime_type = $this->get_ext_mime_type (array( - 'string' => $p->fake_name - ) - ); - -/* if($mime_type) - { - $GLOBALS['phpgw']->db->query ("UPDATE phpgw_vfs2_files as file, phpgw_vfs2_mimetypes as mime SET mime.mime_id=file.mime_id WHERE mime.mime='".$mime_type."' AND file.directory='". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_leading_dirs_clean)."' AND file.name='". - $GLOBALS['phpgw']->db->db_addslashes($p->fake_name_clean)."'", - __LINE__, __FILE__); - }*/ - } - - $size = filesize ($p->real_full_path); - $rarray = array( - 'directory' => $p->fake_leading_dirs, - 'name' => $p->fake_name, - 'size' => $size, - 'mime_type' => $mime_type - ); - - return ($rarray); - } - - - /*! - * @function search - * @abstract This function returns the files that have a field with - * keyword - * - * @author Vinicius Cubas Brand - */ - function search($keyword,$fields=null,$is_backup='N') - { - //the fields in which the keyword will be searched - $searchable_fields = array( - 'created', - 'comment', - 'app', - 'directory', - 'name', - 'link_directory', - 'link_name', - 'version', - 'proper_id' - ); - - if (is_array($fields)) - { - $tmp = array_diff($searchable_fields,$fields); - $searchable_fields = array_diff($searchable_fields,$tmp); - } - - foreach ($searchable_fields as $val) - { - $sf[] = $val." LIKE '%$keyword%'"; - } - - $where = implode(' OR ',$sf); - - $sql = "SELECT file_id - FROM phpgw_vfs2_files - WHERE $where - AND is_backup = '$is_backup'"; - - $this->db->query($sql,__LINE__,__FILE__); - - $res = array(); - while ($this->db->next_record()) - { - $res[] = $this->db->Record['file_id']; - } - - //search in the custom fields - $res = array_unique(array_merge($res,$this->vfs_customfields->search_files($keyword,$fields))); - - sort($res); - - return $res; - } - - /*! - * @function get_file_extension - * @abstract This function returns the file extension for a file. - * - * @author Vinicius Cubas Brand - */ - function get_file_extension($filename) - { - $ext = explode('.',$filename); - - $bla = array_pop($ext); - - if (count($ext)) - { - return $bla; - } - - return ''; - } - - /*! - * @function get_file_id - * @abstract This function returns the file id for a file, false on eror - * @param string, relatives - * - * @author Vinicius Cubas Brand - */ - function get_file_id($data) - { - if (!is_array ($data)) - { - $data = array (); - } - - $default_values = array - ( - 'relatives' => array (RELATIVE_CURRENT), - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - $p = $this->path_parts (array( - 'string' => $data['string'], - 'relatives' => array ($data['relatives'][0]) - ) - ); - - $sql = "SELECT file_id - FROM phpgw_vfs2_files - WHERE directory='".$this->db->db_addslashes($p->fake_leading_dirs_clean)."' - AND name='".$this->db->db_addslashes($p->fake_name_clean)."'"; - - $query = $this->db->query ($sql , __LINE__, __FILE__); - $this->db->next_record (); - - return $this->db->Record['file_id']; - } - - /*! - * @function id2name - * @abstract This function returns an array with all information about - * a file - * @param string, relatives - * - * @author Vinicius Cubas Brand - */ - function id2name($id) - { - $res = $this->db->select('phpgw_vfs2_files','*', - array('file_id'=>$id),__LINE__,__FILE__); - - if($this->db->next_record()) - { - $result = $this->db->Record; - - $res = $this->vfs_mimetypes->get_type(array( - 'mime_id' => $result['mime_id'] - )); - - $result['mime_type'] = $res['mime']; - $result['mime_friendly'] = $res['friendly']; - - return $result; - } - - return array(); - } - - //TODO should generate a new name if archive exists, or have some other - //sort of smart error handling. - function compress($data) - { - $compression_handlers = array( -// 'gz' => 'gzip', -// 'bz2' => 'bzip', -// 'tar' => 'tar', - 'zip' => 'zip' - ); - - if (!is_array($data['files']) || !$data['name']) - { - return false; - } - - $default_values = array - ( - 'type' => 'zip', - 'relatives' => array(RELATIVE_CURRENT), - 'prefix' => $GLOBALS['phpgw_info']['user']['account_lid'], - 'ptype' => '' - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - if (!$data['type'] || !array_key_exists($data['type'],$compression_handlers)) - { - //error: inexistent type given - return false; - } - - - //put extension in archive name, if not exists - if ($this->get_file_extension($data['name']) != $data['type']) - { - if ($data['type'] == 'zip' || $data['type'] == 'tar') - { - $data['name'] .= '.' . $data['type']; - } - else - { - $data['name'] .= '.tar.' . $data['type']; - } - } - - //last element in array $data['relatives'] is the id of destiny - $dest_relativity = (count($data['relatives']))?array_pop($data['relatives']):RELATIVE_CURRENT; - - $dest = $this->path_parts(array( - 'string' => $data['name'], - 'relatives' => $dest_relativity - )); - - if ($this->file_exists(array( - 'string' => $dest->fake_full_path, - 'relatives' => $dest->mask ))) - { - //overwrite handling - - //check if acl allow overwriting - if (!$this->acl_check(array( - 'string' => $dest->fake_full_path, - 'relatives' => $dest->mask, - 'operation' => PHPGW_ACL_EDIT)) - ) - { - //error: cannot overwrite (HANDLE THIS) - return false; - } - } - else - { - //Add handling - - //check acl - if (!$this->acl_check(array( - 'string' => $dest->fake_leading_dirs, - 'relatives' => $dest->mask, - 'operation' => PHPGW_ACL_ADD)) - ) - { - //error: cannot add in dir - return false; - } - } - - $count_rels = count($data['relatives']); - - reset($data['relatives']); - foreach($data['files'] as $filename) - { - if (!($relative = current($data['relatives']))) - { - $relative = RELATIVE_CURRENT; - } - - $p = $this->path_parts(array( - 'string' => $filename, - 'relatives' => array($relative) - )); - - if ($this->acl_check(array( - 'string' => $p->fake_full_path, - 'relatives' => $p->mask, - 'operation' => PHPGW_ACL_READ, - 'must_exist' => true )) ) - { - $filenames[] = $p->real_full_path; - } - else - { - //catch error: file not exists or no permission - } - - next($data['relatives']); - } - - //Save file in tmp folder, then move it to its definitive place. - //This will handle file overwrites and journalling entries. - - $tmp_dir = $GLOBALS['phpgw_info']['server']['temp_dir']; - $tmp_filename = $tmp_dir.'/'.$this->random_filename(); - - $archive_opts = array( - 'basedir' => $dest->real_leading_dirs, - 'inmemory' => 0, - 'overwrite' => 1, //provisory, todo error handling - 'recurse' => 1, - 'storepaths' => 1, - 'level' => 9//compression level, 9 is max, 0 is none, 3 ok - ); - -/* #Didn't work - class.archive.inc.php - $compression_class = $compression_handlers[$data['type']].'_file'; - - require_once(PHPGW_API_INC.'/class.archive.inc.php'); - - $arch = new $compression_class($tmp_filename); - $arch->set_options($archive_opts); - $arch->add_files($filenames); - $arch->create_archive(); - - $type_array = $this->vfs_mimetypes->get_type(array('extension'=>$data['type'])); - $arch_mime = $type_array['mime'];*/ - - - switch($data['type']) - { - case 'zip': - $zip =& CreateObject('phpgwapi.PclZip',$tmp_filename); - - //FIXME not $dest->real_leading_dirs, but the path to be - //removed from files - $zip->create($filenames,PCLZIP_OPT_REMOVE_PATH,$dest->real_leading_dirs); - $arch_mime = 'application/x-zip-compressed'; - break; - - default: - /* - $tar =& CreateObject('phpgwapi.Archive_Tar',$tmp_filename,$data['type']); - //FIXME not $dest->real_leading_dirs, but the path to be - //removed from files - if (!$tar->createModify($filenames,'',$dest->real_leading_dirs.'/')) - { - //TODO throw error - } - $arch_mime = 'application/x-gzip'; - break; - */ - } - - /* VOILA! now the archive is created!!! but it is yet in /tmp and - * have no entry in the database and is not in its correct dir. - * The next and final step is then to make these tasks. */ - - $dest_relativity = $data['relatives'][count($data['relatives'])-1]; - - # ----------------------------------------------------------- # - # All code under here copied from filescenter->bo->fileUpload # - # ----------------------------------------------------------- # - - $file_comment = "Archive contents:\n\n".implode("\n",$data['files']); - $file_comment = substr(0,255,$file_comment); - - # Check to see if the file exists in the database, and get - # its info at the same time - $ls_array = $this->ls(array( - 'string'=> $data['name'], - 'relatives' => array($dest_relativity), - 'checksubdirs' => False, - 'nofiles' => True - )); - - $fileinfo = $ls_array[0]; - - if($fileinfo['name']) - { - if($fileinfo['mime_type'] == 'Directory') - { - $messages[]= $GLOBALS['phpgw']->common->error_list(array(lang('Cannot replace %1 because it is a directory', $fileinfo['name']))); - return false; - } - } - - #overwriting - if($fileinfo['name'] && $fileinfo['deleteable'] != 'N') - { - $tmp_arr=array( - 'string'=> $data['name'], - 'relatives' => array($dest_relativity), - 'attributes' => array( - 'owner_id' => $GLOBALS['phpgw_info']['user']['account_id'], - 'modifiedby_id' => $GLOBALS['phpgw_info']['user']['account_id'], - 'modified' => date('Y-m-d'), - 'mime_type' => $arch_mime, - 'size' => filesize($tmp_filename), - 'deleteable' => 'Y', - 'comment' => $file_comment, - 'prefix' => $data['prefix'], - 'ptype' => $data['ptype'] - #if overwriting, do not change. - #TODO rethink/decide policy for that - #'prefix' => $otherelms['prefix'.$file_number]) - - ) - ); - $this->set_attributes($tmp_arr); - - $tmp_arr=array( - 'from' => $tmp_filename, - 'to' => $data['name'], - 'relatives' => array(RELATIVE_NONE|VFS_REAL, $dest_relativity) - ); - $this->cp($tmp_arr); - - } - else #creating a new file - { - $this->cp(array( - 'from'=> $tmp_filename, - 'to'=> $data['name'], - 'relatives' => array(RELATIVE_NONE|VFS_REAL, $dest_relativity) - )); - - $this->set_attributes(array( - 'string'=> $data['name'], - 'relatives' => array($dest_relativity), - 'attributes'=> array( - 'comment' => $file_comment, - 'mime_type' => $arch_mime, - 'prefix' => $data['prefix'], - 'ptype' => $data['ptype'] - - ) - )); - - } - } - - - #two parts: 1: extract files in tmp_dir. 2: move files to dir, adding - # them in db - function extract($data) - { - $compression_handlers = array( - 'gz' => 'gzip', - 'bz2' => 'bzip', - 'tar' => 'tar', - 'zip' => 'zip' - ); - - - if (!$data['name'] || !$data['dest']) - { - return false; - } - - $default_values = array - ( - 'relatives' => array(RELATIVE_CURRENT,RELATIVE_CURRENT), - 'prefix' => $GLOBALS['phpgw_info']['user']['account_lid'], - 'ptype' => '' - - ); - - $data = array_merge ($this->default_values ($data, $default_values), $data); - - if (!$data['type']) - { - $data['type'] = strtolower($this->get_file_extension($data['name'])); - } - - if (!$data['type'] || !array_key_exists($data['type'],$compression_handlers)) - { - //error: inexistent type given - return false; - } - - - $arch = $this->path_parts (array( - 'string' => $data['name'], - 'relatives' => array ($data['relatives'][0]) - )); - - $dest = $this->path_parts (array( - 'string' => $data['dest'], - 'relatives' => array_pop($data['relatives']) - )); - - //Extract files in tmp folder, then move it to its definitive place. - //This will handle file overwrites and journalling entries. - - $tmp_dir = $GLOBALS['phpgw_info']['server']['temp_dir']; - $tmp_dirname = $tmp_dir.'/'.$this->random_filename(); - - - $tmp_dest = $this->path_parts(array( - 'string' => $tmp_dirname, - 'relatives' => array(RELATIVE_NONE|VFS_REAL) - )); - - if ($this->file_exists(array( - 'string'=> $tmp_dest->fake_full_path, - 'relatives' => $tmp_dest->mask ))) - { - $this->rm(array( - 'string' => $tmp_dest->fake_full_path, - 'relatives' => $tmp_dest->mask - )); - } - - $this->mkdir(array( - 'string' => $tmp_dest->fake_full_path, - 'relatives' => array($tmp_dest->mask) - )); - - - # see if user has add permission in destination folder - if (!$this->acl_check(array( - 'string' => $dest->fake_full_path, - 'relatives' => $dest->mask, - 'operation' => PHPGW_ACL_ADD, - 'must_exist' => true )) - ) - { - return false; //TODO error handling - } - - #extract files - switch ($data['type']) - { - case 'zip': - $zip =& CreateObject('phpgwapi.PclZip',$arch->real_full_path); - if (!$zip->extract(PCLZIP_OPT_PATH,$tmp_dest->real_full_path,PCLZIP_OPT_SET_CHMOD,DEFAULT_LOW_PERMS)) - { - return false; //TODO handle error - } - break; - default: - return false; - /* - - $archive_opts = array( - 'basedir' => $tmp_dest->real_full_path, - 'overwrite' => 1 //provisory, todo error handling - ); - - $compression_class = $compression_handlers[$data['type']].'_file'; - $archive_obj = new $compression_class($arch->real_full_path); - $archive_obj->set_options($archive_opts); - $archive_obj->extract_files(); - */ - - /* $tar =& CreateObject('phpgwapi.Archive_Tar',$arch->real_full_path); - if (!$tar->extract($tmp_dest->real_full_path)) - { - return false; //TODO handle error - } - break;*/ - default: - return false; //TODO handle error - } - - #refresh db - $filelist = $this->ls(array( - 'string' => $tmp_dest->fake_full_path, - 'relatives' => array($tmp_dest->mask), - 'checksubdirs' => true, - 'nofiles' => false - )); - - foreach ($filelist as $file) - { - $res = $this->mv(array( - 'from' => $file['directory'].'/'.$file['name'], - 'to' => $dest->fake_full_path.'/'.$file['name'], - 'relatives' => array(RELATIVE_NONE|VFS_REAL,$dest->mask) - )); - - $this->set_attributes(array( - 'string' => $dest->fake_full_path.'/'.$file['name'], - 'relatives' => array($dest->mask), - 'attributes' => array( - 'prefix' => $data['prefix'], - 'ptype' => $data['ptype'], - 'mime_type' => $file['mime_type'], - 'size' => $file['size'] - ) - )); - } - - return true; - } - - /*! - * @function random_filename() - * @abstract Generates a Random Filename - * - * @result string - */ - function random_filename() - { - $filename = ''; - $filename_length = 8; - while (strlen($filename) < $filename_length) { - $filename .= chr(rand (97,122)); - } - - return $filename.'.tmp'; - } - - function generate_proper_id($owner_name,$filetype_identifier) - { - $prefix = $owner_name.'-'.$filetype_identifier.'-'; - #$prefix = 'P-' . $this->year . '-'; - - $prefix = str_replace('--','-',$prefix); - - $qry = "select max(proper_id) from phpgw_vfs2_files where proper_id like ('$prefix%') AND LENGTH(proper_id) <= ".(strlen($prefix)+4); - -// echo $qry; -// exit(); - - $this->db->query("select max(proper_id) from phpgw_vfs2_files where proper_id like ('$prefix%') AND LENGTH(proper_id) <= ".(strlen($prefix)+4)); - $this->db->next_record(); - $max = $this->add_leading_zero(array_pop(explode('-',$this->db->f(0)))); - return $prefix . $max; - } - - function add_leading_zero($num) - { -/* if ($id_type == "hex") - { - $num = hexdec($num); - $num++; - $num = dechex($num); - } - else - { - $num++; - } */ - - $num++; - - if (is_numeric($num)) - { - if (strlen($num) == 4) - $return = $num; - if (strlen($num) == 3) - $return = "0$num"; - if (strlen($num) == 2) - $return = "00$num"; - if (strlen($num) == 1) - $return = "000$num"; - if (strlen($num) == 0) - $return = "0001"; - } - else - { - $return = $num; - } - - return strtoupper($return); - } - - - //import function from old vfs - function import_vfs() - { - $filename = PHPGW_API_INC.'/class.vfs_sql.inc.php'; - - if (function_exists('file_get_contents')) - { - $file_vfs_sql = file_get_contents($filename); - } - else - { - $fp = fopen($filename,'r'); - $file_vfs_sql = fread($fp,filesize($filename)); - fclose($fp); - } - - $file_vfs_sql = str_replace( - array('class vfs','function vfs',''), - array('class vfs_sql_old','function vfs_sql_old'),$file_vfs_sql - ); - - eval($file_vfs_sql); - - $obj_vfs_sql = new vfs_sql_old(); - - $obj_vfs_sql->override_acl = true; - - $directories = $obj_vfs_sql->ls(array( - 'string' => '/', - 'relatives' => array(RELATIVE_ROOT), - 'checksubdirs' => true, - 'nofiles' => false, - 'mime_type' => 'Directory' - )); - - $global_content = $obj_vfs_sql->ls(array( - 'string' => '/', - 'relatives' => array(RELATIVE_ROOT), - 'checksubdirs' => true, - 'nofiles' => false - )); - - $obj_vfs_sql->override_acl = false; - - $this->override_acl = true; - - foreach($directories as $key => $dir) - { - $dirname = str_replace('//','/',$dir['directory'].'/'.$dir['name']); - $dir_exists_in_vfs2 = $this->file_exists(array( - 'string' => $dirname, - 'relatives' => array(RELATIVE_ROOT), - 'allow_outside' => false - )); - - - if ($dir_exists_in_vfs2) - { - $dir_is_dir = $this->file_type(array( - 'string' => $dirname, - 'relatives' => array(RELATIVE_ROOT) - )) == 'Directory'; - - if ($dir_is_dir) - { - //good - just add permissions to the old owner - - //1. get information about file - - $file_info = $this->ls(array( - 'string' => $dirname, - 'relatives' => array(RELATIVE_ROOT), - 'nofiles' => true, - 'checksubdirs' => false, - 'allow_outside' => false - )); - - if (!$file_info['proper_id']) - { - $this->set_attributes(array( - 'string' => $dirname, - 'relatives' => array(RELATIVE_ROOT), - 'attributes' => array( - 'prefix' => $GLOBALS['phpgw']->accounts->id2name($dir['owner_id']), - 'comment' => $dir['comment'] - ) - )); - } - - //if user is not the owner of the file, will - //add him in the list of authorized personnel - if (array_key_exists(0,$file_info) && $file_info[0]['owner_id'] != $dir['owner_id']) - { - $file_id = $this->get_file_id(array( - 'string' => $dirname, - 'relatives' => array(RELATIVE_ROOT) - )); - - if ($file_id != 0) - { - if ($dirname != "/" && $dirname != "/home") - { - $perms = $this->vfs_sharing->get_permissions($file_id); - $perms[$dir['owner_id']] = PHPGW_ACL_READ | PHPGW_ACL_ADD | PHPGW_ACL_EDIT | PHPGW_ACL_DELETE; - - $this->vfs_sharing->set_permissions(array($file_id => $perms)); - } - - } - else - { - //something gone wrong... This should not have - //happened - trigger_error('Failed in permission setting of file '.$dirname.' at importing procedure.'); - } - } - continue; - } - else - { - $this->mv(array( - 'from' => $dirname, - 'to' => $dirname.'_renamed', - 'relatives' => array(RELATIVE_ROOT,RELATIVE_ROOT) - )); - //error, bacuse wanting to touch a dir that is a - //file in new vfs - } - } - - $this->mkdir(array( - 'string' => $dirname, - 'relatives' => array(RELATIVE_ROOT) - )); - - unset($dir['file_id']); - - $dir['prefix'] = $GLOBALS['phpgw']->accounts->id2name($dir['owner_id']); - - $this->set_attributes(array( - 'string' => $dirname, - 'relatives' => array(RELATIVE_ROOT), - 'attributes' => $dir - )); - } - - foreach($global_content as $file) - { - $filename = str_replace('//','/',$file['directory'].'/'.$file['name']); - $file_exists_in_vfs2 = $this->file_exists(array( - 'string' => $filename, - 'relatives' => array(RELATIVE_ROOT), - 'allow_outside' => false - )); - - - if ($file['mime_type'] != 'Directory') - { - if ($file_exists_in_vfs2) - { - $file_is_dir = $this->file_type(array( - 'string' => $filename, - 'relatives' => array(RELATIVE_ROOT) - )) == 'Directory'; - - if (!$file_is_dir) - { - //good - just add permissions to the old owner - - //1. get information about file - - $file_info = $this->ls(array( - 'string' => $filename, - 'relatives' => array(RELATIVE_ROOT), - 'nofiles' => true, - 'checksubdirs' => false, - 'allow_outside' => false - )); - - if (!$file_info['proper_id']) - { - $this->set_attributes(array( - 'string' => $filename, - 'relatives' => array(RELATIVE_ROOT), - 'attributes' => array( - 'prefix' => $GLOBALS['phpgw']->accounts->id2name($file['owner_id']), - 'comment' => $file['comment'] - ) - )); - } - - //if user is not the owner of the file, will - //add him in the list of authorized personnel - if (array_key_exists(0,$file_info) && $file_info[0]['owner_id'] != $file['owner_id']) - { - $file_id = $this->get_file_id(array( - 'string' => $filename, - 'relatives' => array(RELATIVE_ROOT) - )); - - if ($file_id != 0) - { - if ($filename != "/" && $filename != "/home") - { - $perms = $this->vfs_sharing->get_permissions($file_id); - $perms[$file['owner_id']] = PHPGW_ACL_READ | PHPGW_ACL_ADD | PHPGW_ACL_EDIT | PHPGW_ACL_DELETE; - - $this->vfs_sharing->set_permissions(array($file_id => $perms)); - } - - } - else - { - //something gone wrong... This should not have - //happened - trigger_error('Failed in permission setting of file '.$filename.' at importing procedure.'); - } - } - continue; - } - else - { - $this->mv(array( - 'from' => $filename, - 'to' => $filename.'_renamed', - 'relatives' => array(RELATIVE_ROOT,RELATIVE_ROOT) - )); - //error, bacuse wanting to touch a file that is a - //dir in new vfs - } - - } - - $this->touch(array( - 'string' => $filename, - 'relatives' => array(RELATIVE_ROOT) - )); - - unset($file['file_id']); - - $file['prefix'] = $GLOBALS['phpgw']->accounts->id2name($file['owner_id']); - - $this->set_attributes(array( - 'string' => $filename, - 'relatives' => array(RELATIVE_ROOT), - 'attributes' => $file - - )); - - } - } - $this->override_acl = false; - } - - # # - # Functions that treat with application dirs # - # # - - //gets the root of the application files dir - function get_appfiles_root() - { - if ($this->appfiles_root) - { - return $this->appfiles_root; - } - - $appfiles_root = '/'.$GLOBALS['phpgw_info']['server']['file_appfolder']; - - if ($appfiles_root == '/') //folder not set in setup - { - //see if there is a /infolog file in vfs. If have, use it. Else use /appfiles. - $res = $this->db->select('phpgw_vfs2_files','file_id',array('directory'=>'/','name'=>'infolog'),__LINE__,__FILE__); - if ($this->db->next_record()) //dir exists - { - $appfiles_root = '/infolog'; - } - else - { - $appfiles_root = '/appfiles'; - } - } - $this->appfiles_root = $appfiles_root; - return $appfiles_root; - } - - //is folder belonging to an application (like for instance projects) - //$path is the virtual path. Pass the real path here seems nonsense now. - function is_appfolder($path) - { - $app_files_root = $this->get_appfiles_root(); - - return preg_match('/'.str_replace('/',"\\/",$app_files_root).'/',$path); - } - - - /** - * Method: get_external_name - * - * Given an application name and an id of this application, - * returns its name. - */ - function get_external_name($p_appname,$p_appid) - { - if (!$this->external_files_info) - { - $this->_consult_external_files_info(); - } - - if (!$this->external_files_info[$p_appname][$p_appid]['caption']) - { - return $GLOBALS['phpgw']->hooks->single(array( - 'appname' => $p_appname, - 'location' => 'get_name', - 'id' => $p_appid - )); - } - else - { - return $this->external_files_info[$p_appname][$p_appid]['caption']; - } - } - - /** - * Method: get_external_files_info - * - * Returns all the external files info. This is good for some applications - * that need to show all the external files or all the external folders - */ - function &get_external_files_info() - { - if (!$this->external_files_info) - { - $this->_consult_external_files_info(); - } - return $this->external_files_info; - } - - /** - * Method: _consult_external_files_info - * - * Consults the external files info and store it in the vfs - * object attribute $this->external_files_info - */ - function _consult_external_files_info() - { - //Gets the application dirs that were set as shared, to include them - //also in the tree - $application_shared_files = $this->vfs_sharing->get_shares(array( - 'only_dir' => $this->get_appfiles_root(), - 'account_id' => $GLOBALS['phpgw_info']['user']['account_id'] - )); - - foreach($application_shared_files as $shared_file) - { - $shared_file = ereg_replace($this->get_appfiles_root().'\/*','',$shared_file['directory'].'/'.$shared_file['name']); - $shared_file = ereg_replace('\/*$','',$shared_file); - $shared_file = explode('/',$shared_file); - - $appname = $shared_file[0]; - $appid = $shared_file[1]; - - $include_also[$appname][] = $appid; - } - - $this->external_files_info = $GLOBALS['phpgw']->hooks->process(array( - 'location' => 'files_info', - 'account_id' => $this->userinfo['account_id'], - 'include_also' => $include_also - )); - } - - /** - * Method: set_sharing - * - * Sets the file sharing of ONE file to the given ACL - * - * Parameters: - * - * string - the full string describing the file - * relatives - the array of relativity - * permissions - an array with the user id as key, and the permissions - * (that are a boolean operation of PHPGW_ACLs) as value. - * If you want to apply a default permission to all users, - * use the 0 id as key - */ - function set_sharing($params) - { - //sets the file attibute to be 'shared=Y' - $this->set_attributes(array( - 'string' => $params['string'], - 'relatives' => $params['relatives'], - 'attributes' => array('shared' => 'Y') - )); - - $file_id = $this->get_file_id(array( - 'string' => $params['string'], - 'relatives' => $params['relatives'] - )); - - $this->vfs_sharing->set_permissions(array($file_id => $params['permissions'])); - } - - - /** - * Method: unset_sharing - * - * Unsets all file sharing and ACL permissions for a file - * - * Parameters: - * - * string - the full string describing the file - * relatives - the array of relativity - */ - function unset_sharing($params) - { - $this->set_attributes(array( - 'string' => $params['string'], - 'relatives' => $params['relatives'], - 'attributes' => array('shared' => 'N') - )); - - $file_id = $this->get_file_id(array( - 'string' => $params['string'], - 'relatives' => $params['relatives'] - )); - - $this->vfs_sharing->remove_all_permissions($file_id); - } - } -?> diff --git a/phpgwapi/inc/class.vfs_versionsystem.inc.php b/phpgwapi/inc/class.vfs_versionsystem.inc.php deleted file mode 100644 index 4105161bcd..0000000000 --- a/phpgwapi/inc/class.vfs_versionsystem.inc.php +++ /dev/null @@ -1,684 +0,0 @@ - * - * sponsored by Thyamad - http://www.thyamad.com * - * ------------------------------------------------------------------------- * - * Description: File version class handler for VFS (SQL implementation v2) * - * ------------------------------------------------------------------------- * - * This program is free software; you can redistribute it and/or modify it * - * under the terms of the GNU General Public License as published by the * - * Free Software Foundation; either version 2 of the License, or (at your * - * option) any later version. * - \***************************************************************************/ - - class vfs_versionsystem - { - - /* The high level database handler object */ -// var $db_highlevel; - - /* Stores the possible amount number of old file backups; In an - * inserction, this number will be verified and if there are already - * $backups backed up for a file, will delete backup of the oldest - * (although keeping the record of operations). 0 for no backup system - * and -1 to infinite versions. */ - var $backups; - - /* tmp dir (without end slash) to store temporary file backups (when - * file is snapshotted) */ - var $tmp_dir; - - /* Virtual file system base class */ - var $vfs; - - /* Stores information about snapshotted files. Array with the file_id - as index. */ - var $snapshotted_files; - - /* Database handling */ - var $db; - - /* Now */ - var $now; - - var $account_id; - - var $last_saved_snapshot=-1; - - var $backup_foldername = '_backup'; - - //Operations that create file backups - var $backup_operations = array( - VFS_OPERATION_EDITED - ); - - var $attributes = array( - 'version_id', /* Integer. Unique to each modification. */ - 'file_id', /* Integer. Id of the file that modif. belongs.*/ - 'operation', /* Operation made in modification. */ - 'modifiedby_id', /* phpGW account_id of who last modified */ - 'modified', /* Datetime of modification, in SQL format */ - 'version', /* Version of file prior modification. */ - 'comment', /* Human-readable description of modification. */ - 'backup_file_id', /* file_id of file that is a backup . */ - 'backup_content', /* usable if files are stored in database. */ - 'src', /* source directory in a copy or move operation.*/ - 'dest' /* destination directory in a copy or move operation.*/ - ); - - /*! - * @function vfs_versionsystem - * @abstract Object constructor - * @author Vinicius Cubas Brand - */ - function vfs_versionsystem($create_vfs=true) - { - //use create_vfs=false and after this use $this->set_vfs to keep the - // same object (i.e. use reference) in $this->vfs instead of - // creating a new object. - if ($create_vfs) - { - $this->vfs =& CreateObject('phpgwapi.vfs'); - } - - /* FIXME this takes a value defined in the filescenter - * configuration. Better next time to take a value from global api - * configuration. must fix here and in the filescenter */ - if (array_key_exists('filescenter',$GLOBALS['phpgw_info']['user']['preferences'])) - { - $this->backups = $GLOBALS['phpgw_info']['user']['preferences']['filescenter']['vfs_backups']; - } - else - { - $this->backups = 5; - } - - $this->snapshotted_files = array(); - $this->db = clone($GLOBALS['phpgw']->db); - $this->now = date('Y-m-d H:i:s'); - $this->account_id = $GLOBALS['phpgw_info']['user']['account_id']; - $this->tmp_dir = $GLOBALS['phpgw_info']['server']['temp_dir']; - - } - - /*! - * @function create_initial_version() - * @abstract Creates a initial journal entry for a file - * @description Must be used after a file has been created. Will create - * an initial journal entry in the database. If somehow - * the database already have any journal for that file, - * this method is wrongly called and will do nothing. - * Also if no file is found with that file_id, fails. - * - * @author Vinicius Cubas Brand - */ - function create_initial_version($file_id) - { - if ($GLOBALS['phpgw']->banish_journal) - { - return; - } - - $GLOBALS['phpgw']->banish_journal = true; - - //See if file exists - $this->db->select('phpgw_vfs2_files','*', - array('file_id'=>$file_id), __LINE__,__FILE__); - - if (!$this->db->next_record()) - { - $GLOBALS['phpgw']->banish_journal = false; - return false; - } - - $file_record = $this->db->Record; - - //See if journal for the file already exists - $this->db->select('phpgw_vfs2_versioning','*', - array('file_id'=>$file_id),__LINE__,__FILE__); - - if ($this->db->next_record()) - { - $GLOBALS['phpgw']->banish_journal = false; - return true; //TODO error message - } - - $insert_data = array( - 'file_id' => $file_record['file_id'], - 'operation' => VFS_OPERATION_CREATED, - 'modified' => $this->now, - 'modifiedby_id' => $this->account_id, - 'version' => '0.0.0.0' - ); - - $res = $this->db->insert('phpgw_vfs2_versioning',$insert_data,null, - __LINE__,__FILE__); - -/* $this->db->update('phpgw_vfs2_files',array( - 'modified' => $insert_data['modified'], - 'modifiedby_id' => $insert_data['modifiedby_id'] - ), - array('file_id' => $insert_data['file_id']).__LINE__,__FILE__ - );*/ - - - - if ($res) - { - $GLOBALS['phpgw']->banish_journal = false; - return true; - } - - $GLOBALS['phpgw']->banish_journal = false; - return false; - } - - /*! - * @function save_snapshot() - * @abstract Saves a snapshot from a file - * @description Must be called before any modification in a file. After - * the modification was successful, one must do a vfs_version->commit() - * Depending of the type of operation and how backups are set, will - * handle backups. If a commit is not made until the end of the script, - * no modifications in the journal will be saved. - * - * @param $file_id int The file_id - * @param $operation int A VFS_OPERATION as defined in vfs_shared file - * @param $other string Its use will differ depending on the operation: - * Copy,Move: $other contains the fake_full_path_clean of destination - * - * @author Vinicius Cubas Brand - * @result bool - */ - function save_snapshot($file_id,$operation,$comment='',$other='') - { - //Prevent recursive reentrant when working in vfs->copy, f.inst - if ($GLOBALS['phpgw']->banish_journal) - { - return; - } - - $GLOBALS['phpgw']->banish_journal = true; - - $this->db->select('phpgw_vfs2_files','*', - array('file_id'=>$file_id), __LINE__,__FILE__); - - if (!$this->db->next_record()) - { - - $GLOBALS['phpgw']->banish_journal = false; - return false; - } - - $file_record = $this->db->Record; - - //If already snapshotted, will do a rollback in the old snapshot - //before make a new one. - if ($this->snapshotted_files[$file_record['file_id']]) - { - $this->rollback($file_record['file_id']); - } - - //Create a backup if necessary - if ($this->backups != 0 && in_array($operation,$this->backup_operations)) - { - $random_filename = $this->tmp_dir.SEP.$this->random_filename(); - - $this->vfs->cp(array( - 'from' => $file_record['directory'].SEP.$file_record['name'], - 'to' => $random_filename, - 'relatives' => array(RELATIVE_ROOT,RELATIVE_NONE|VFS_REAL) - )); - - $this->vfs->set_attributes(array( - 'string' => $random_filename, - 'relatives' => array(RELATIVE_NONE|VFS_REAL), - 'attributes' => array('is_backup' => 'Y') - )); - - } - - //backup_file_id and backup_data will be set in commit() only. - $insert_data = array( - 'file_id' => $file_record['file_id'], - 'operation' => $operation, - 'modifiedby_id' => $this->account_id, - 'modified' => $this->now, //Datetime of entry - 'version' => $file_record['version'], - 'comment' => $comment, - ); - - if ($operation == VFS_OPERATION_COPIED || $operation == VFS_OPERATION_MOVED) - { - $insert_data['src'] = $file_record['directory'].'/'.$file_record['name']; - $insert_data['dest'] = $other['dest']; - - } - - /* $file_data is the information of the file, stored in - * $this->snapshotted_files. 'insert_data' have the data to be - * inserted in the versioning table, 'tmp_filename' is the name of - * the temporary backup copy, if any, and 'record' is the - * information of the file before changes (that will be made between - * the call to save_snapshot() and the call to commit(). - */ - $file_data = array( - 'insert_data' => $insert_data, - 'tmp_filename' => $random_filename, - 'record' => $file_record - ); - - $this->snapshotted_files[$file_id] = $file_data; - $this->last_saved_snapshot = $file_id; - - $GLOBALS['phpgw']->banish_journal = false; - return true; - } - - /*! - * @function commit() - * @abstract Commits the creation of a journal entry - * @description Will have to be called after a save_snapshot is made. - * If a vfs_version->save_snapshot() call is not made before, this - * method does nothing. If no parameter is passed, will commit the - * file from the last saved snapshot. - * - * @param $file_id int The file_id - * - * @author Vinicius Cubas Brand - * @result bool - */ - function commit($file_id=-1) - { - //Prevent recursive reentrant when working in vfs->copy, f.inst - if ($GLOBALS['phpgw']->banish_journal) - { - return; - } - - $GLOBALS['phpgw']->banish_journal = true; - - if ($file_id == -1) - { - if ($this->last_saved_snapshot == -1) - { - - $GLOBALS['phpgw']->banish_journal = false; - return false; - } - - $file_id = $this->last_saved_snapshot; - } - - if (!$this->snapshotted_files[$file_id]) - { - - $GLOBALS['phpgw']->banish_journal = false; - return false; - } - - $file_data = $this->snapshotted_files[$file_id]; - - //if there is any backup to be made, will make these backups and - //remove too old backup versions, as defined in configuration. - if ($this->backups != 0 && in_array($file_data['insert_data']['operation'],$this->backup_operations)) - { - - //counts the number of stored backups - $where = "file_id=$file_id AND (backup_file_id != NULL OR backup_file_id != 0)"; - - $this->db->select('phpgw_vfs2_versioning','count(*)',$where, - __LINE__,__FILE__); - - $this->db->next_record(); - - if ($this->db->Record[0] >= $this->backups && $this->backups != -1) - { - //Remove old backups - - //Deletes oldest backup(s) - $backups_to_be_deleted = $this->db->Record[0] - $this->backups + 1; - - $sql = "SELECT vers.version_id as version_id, - vers.backup_file_id as backup_file_id, - files.directory as directory, - files.name as name - FROM phpgw_vfs2_versioning as vers, - phpgw_vfs2_files as files - WHERE vers.file_id=$file_id - AND vers.backup_file_id = files.file_id - ORDER BY vers.modified"; - - $this->db->query($sql,__LINE__,__FILE__); - - for ($i = 0; $i < $backups_to_be_deleted; $i++) - { - //FIXME don't know why this only works 4 the 1st cycle - $this->db->next_record(); - - $version_file_id = $this->db->Record['backup_file_id']; - $version_id = $this->db->Record['version_id']; - - - $version_directory = $this->db->Record['directory']; - $version_name = $this->db->Record['name']; - - //Removes old backup - $this->vfs->rm(array( - 'string' => $version_directory.SEP.$version_name, - 'relatives' => array(RELATIVE_ROOT) - )); - - $versions_to_update[] = $version_id; - - } - - if ($versions_to_update) - { - //updates old journal - $update_data = array( - 'backup_file_id' => '', - 'backup_content' => '' - ); - - foreach ($versions_to_update as $key => $val) - { - - $update_where = array( - 'version_id' => $val - ); - - $this->db->update('phpgw_vfs2_versioning', - $update_data,$update_where,__LINE__,__FILE__); - } - - } - unset($version_id); - } - - //create backup folder, if not exists - //Important: the backup dir will be inside the virtual root - $backup_foldername = $file_data['record']['directory'].SEP.$this->backup_foldername; - - $dir = array( - 'string' => $backup_foldername, - 'relatives' => array(RELATIVE_ROOT) - ); - - if (!$this->vfs->file_exists($dir)) - { - $this->vfs->mkdir($dir); //TODO error messages - - $attributes=array_merge($dir,array( - 'attributes' => array( - 'is_backup' => 'Y' - ) - )); - - $this->vfs->set_attributes($attributes); - } - - //create a backup filename - $backup_filename = $this->backup_filename( - $file_data['record']['name'], - $file_data['insert_data']['version'] - ); - - //move file from temporary location to its definitive location - $res = $this->vfs->mv(array( - 'from' => $file_data['tmp_filename'], - 'to' => $backup_foldername.SEP.$backup_filename, - 'relatives' => array(RELATIVE_NONE|VFS_REAL,RELATIVE_ROOT) - )); - - //sets its attribute as backup - $this->vfs->set_attributes(array( - 'string' => $backup_foldername.SEP.$backup_filename, - 'relatives' => array(RELATIVE_ROOT), - 'attributes' => array('is_backup' => 'Y') - )); - - //TODO backup content in database support - - //Fetch the backup file_id to put this information in the - //version table - if ($res) - { - $res_ls = $this->vfs->ls(array( - 'string' => $backup_foldername.SEP.$backup_filename, - 'relatives' => RELATIVE_ROOT, - 'nofiles' => True, - 'backups' => True - )); - - if ($res_ls) - { - $file_data['insert_data']['backup_file_id'] = $res_ls[0]['file_id']; - } - } - } - - $res = $this->db->insert('phpgw_vfs2_versioning', - $file_data['insert_data'],null,__LINE__,__FILE__); - - - - if ($res) - { - //If operation is one of the type that increments file version - if (in_array($file_data['insert_data']['operation'],$this->backup_operations)) - { - - $this->db->update('phpgw_vfs2_files', - array( - 'version' => $this->inc($file_data['insert_data']['version']), - 'modified' => $file_data['insert_data']['modified'], - 'modifiedby_id' => $file_data['insert_data']['modifiedby_id'] - ), - array('file_id' => $file_data['insert_data']['file_id']), - __LINE__, __FILE__ - ); - } - - unset($this->snapshotted_files[$file_id]); - $this->last_saved_snapshot = -1; - - $GLOBALS['phpgw']->banish_journal = false; - return true; - } - - $GLOBALS['phpgw']->banish_journal = false; - return false; - } - - - /*! - * @function rollback() - * @abstract Rollbacks the save of the snapshot - * @description Will have to be called after a save_snapshot is made. - * If a vfs_version->save_snapshot() call is not made before, this - * method does nothing. If no parameter is passed, will rollback the - * file from the last saved snapshot. This method only deletes the - * temporary backup file and the saved file information - * - * @param $file_id int The file_id - * - * @author Vinicius Cubas Brand - * @result bool - */ - function rollback($file_id=-1) - { - //Prevent recursive reentrant when working in vfs->copy, f.inst - if ($GLOBALS['phpgw']->banish_journal) - { - return; - } - - $GLOBALS['phpgw']->banish_journal = true; - - if ($file_id == -1) - { - if ($this->last_saved_snapshot == -1) - { - - $GLOBALS['phpgw']->banish_journal = false; - return false; - } - - $file_id = $this->last_saved_snapshot; - } - - if (!$this->snapshotted_files[$file_id]) - { - - $GLOBALS['phpgw']->banish_journal = false; - return false; - } - - $file_data = $this->snapshotted_files[$file_id]; - - $this->vfs->rm(array( - 'string' => $file_data['tmp_filename'], - 'relatives' => array(RELATIVE_NONE | VFS_REAL) - )); - - unset($this->snapshotted_files[$file_id]); - $this->last_saved_snapshot = -1; - - $GLOBALS['phpgw']->banish_journal = false; - return true; - } - - /*! - * @function get_journal() - * @abstract Returns an array with the journal for a file - */ - function get_journal($file_id) - { - //TODO support for database-only storage. - $fields = array_diff($this->attributes,array('backup_content')); - - $where = 'file_id='.$file_id.' ORDER BY modified DESC, version DESC, operation DESC'; - - - $this->db->select('phpgw_vfs2_versioning',$fields,$where, - __LINE__,__FILE__); - - while ($this->db->next_record()) - { - $result[] = $this->db->Record; - } - - return $result; - } - - - /*! - * @function inc() - * @abstract Given a file version, increments it using the vfs - * versioning pattern and returns the incremented file version. - * Analyzes operation and increments the file version taking - * consideration of this operation. - * - * @param $version string The file version - * @param $operation int Some VFS_OPERATION as defined in vfs_shared - * - * @result string - */ - function inc($version) - { - /* - * Let's increment the version for the file itself. We keep the - * current version when making the journal entry, because that was - * the version that was operated on. The maximum numbers for each - * part in the version string: none.99.9.9 - */ - $version_parts = split ("\.", $version); - $newnumofparts = $numofparts = count ($version_parts); - - if ($version_parts[3] >= 9) - { - $version_parts[3] = 0; - $version_parts[2]++; - $version_parts_3_update = 1; - } - elseif (isset ($version_parts[3])) - { - $version_parts[3]++; - } - - if ($version_parts[2] >= 9 && $version_parts[3] == 0 && $version_parts_3_update) - { - $version_parts[2] = 0; - $version_parts[1]++; - } - - if ($version_parts[1] > 99) - { - $version_parts[1] = 0; - $version_parts[0]++; - } - - for ($i = 0; $i < $newnumofparts; $i++) - { - if (!isset ($version_parts[$i])) - { - break; - } - - if ($i) - { - $newversion .= '.'; - } - - $newversion .= $version_parts[$i]; - } - - return $newversion; - } - - function set_vfs(&$vfs) - { - $this->vfs =& $vfs; - } - - #helper, private functions - - /*! - * @function random_filename() - * @abstract Generates a Random Filename - * - * @result string - */ - function random_filename() - { - $filename = ''; - $filename_length = 8; - while (strlen($filename) < $filename_length) { - $filename .= chr(rand (97,122)); - } - - return $filename.'.tmp'; - } - - /*! - * @function backup_filename() - * @abstract Return the backup filename for a certain filename + version - * - * @result string - */ - function backup_filename($filename,$version) - { - $version = str_replace('.','_',$version); - $fbrk = explode('.',$filename); - $fbrk[0] .= '-'.$version; - return implode('.',$fbrk); - } - - } - - -?> diff --git a/phpgwapi/setup/default_records.inc.php b/phpgwapi/setup/default_records.inc.php index 6c605bd23c..54d80f1b47 100644 --- a/phpgwapi/setup/default_records.inc.php +++ b/phpgwapi/setup/default_records.inc.php @@ -12,7 +12,7 @@ /* $Id$ */ //$oProc->m_odb->Halt_On_Error = 'yes'; - + foreach(array( 'aa' => 'Afar', 'ab' => 'Abkhazian', @@ -156,7 +156,7 @@ foreach(array( { $oProc->insert($GLOBALS['egw_setup']->languages_table,array('lang_name' => $name),array('lang_id' => $id),__LINE__,__FILE__); } - + foreach(array( 'sessions_checkip' => 'True', 'image_type' => '1', @@ -177,25 +177,6 @@ $oProc->query("INSERT INTO egw_interserv(server_name,server_host,server_url,trus $oProc->query ("INSERT INTO egw_vfs (vfs_owner_id, vfs_createdby_id, vfs_modifiedby_id, vfs_created, vfs_modified, vfs_size, vfs_mime_type, vfs_deleteable, vfs_comment, vfs_app, vfs_directory, vfs_name, vfs_link_directory, vfs_link_name) VALUES (0,0,0,'1970-01-01',NULL,NULL,'Directory','Y',NULL,NULL,'/','', NULL, NULL)"); $oProc->query ("INSERT INTO egw_vfs (vfs_owner_id, vfs_createdby_id, vfs_modifiedby_id, vfs_created, vfs_modified, vfs_size, vfs_mime_type, vfs_deleteable, vfs_comment, vfs_app, vfs_directory, vfs_name, vfs_link_directory, vfs_link_name) VALUES (0,0,0,'1970-01-01',NULL,NULL,'Directory','Y',NULL,NULL,'/','home', NULL, NULL)"); -// Create Addressbook for Default group, by setting a group ACL from the group to itself for all rights: add, read, edit and delete +// Create Addressbook for Default group, by setting a group ACL from the group to itself for all rights: add, read, edit and delete $defaultgroup = $GLOBALS['egw_setup']->add_account('Default','Default','Group',False,False); $GLOBALS['egw_setup']->add_acl('addressbook',$defaultgroup,$defaultgroup,1|2|4|8); - -/*************************************************************************\ - * Default Records for VFS v2 * -\*************************************************************************/ -if ($GLOBALS['DEBUG']) -{ - echo "
\ninitiating to create the default records for VFS SQL2..."; -} - -include EGW_INCLUDE_ROOT.'/phpgwapi/setup/default_records_mime.inc.php'; - -$oProc->query("INSERT INTO phpgw_vfs2_files (mime_id,owner_id,createdby_id,size,directory,name) - SELECT mime_id,0,0,4096,'/','' FROM phpgw_vfs2_mimetypes WHERE mime='Directory'"); - -if ($GLOBALS['DEBUG']) -{ - echo " DONE!"; -} -/*************************************************************************/ diff --git a/phpgwapi/setup/default_records_mime.inc.php b/phpgwapi/setup/default_records_mime.inc.php deleted file mode 100644 index c92380570a..0000000000 --- a/phpgwapi/setup/default_records_mime.inc.php +++ /dev/null @@ -1,186 +0,0 @@ - * - * sponsored by Thyamad - http://www.thyamad.com * - * ------------------------------------------------------------------------- * - * Image data files extracted from Intermesh Group-Office, * - * all rights reserved. * - * http://www.group-office.com/ * - * ------------------------------------------------------------------------- * - * This program is free software; you can redistribute it and/or modify it * - * under the terms of the GNU Lesser General Public License (version 2) as * - * published by the Free Software Foundation. * - * This software is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU Lesser General Public License for more details. * - \***************************************************************************/ - if ($GLOBALS['DEBUG']) - { - echo " inserting default mime-types... "; - } - - if (!isset($oProc)) - { - $oProc =& $GLOBALS['phpgw_setup']->oProc; - } - - if (isset($oProc)) - { - - - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'dwf',"mime"=>'image/VND.DWF',"friendly"=>'Autocad Tekening',"image"=>pack('H*','47494638396110001000f700000000000000840000ff00840000848400ffff848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f9040100000a002c000000001000100000087e0015081c48b0e040030813223428d0408204081e265868d040c487111d1aa8885122808f000a5a4c708080c90310016c3c48924001020308a05449d0a2cc0402605aa4c99200c90101040448c0b321020302040c101a004151050e0f040d1000c0cc9546498244e9142bd48e609f8e049bd22bc8b367bd4255c876654000003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'jpg',"mime"=>'image/jpeg',"friendly"=>'JPEG image',"image"=>pack('H*','47494638396110001000f7000096f6f569c8ca5dcdcec283627c3d1c7d3c1c7ac2c174c4c596f5f7c38262a9c9c893fbe4a2b3a390b8b898ba9900444591baaa008b1d65876696b5b7a7efeea3ebea7c3d1a7d3d1aa1f1f24c1c2c451e3d4c1d2fb08191b3839337a7a898b8a090baacb182946786678afafbb9c2c1bfc1c086beb51d75450b5a3b3ac2c297d7b216b6b4c3836063322b1e6d4eaac9cb49193f501f18a9c8ca4a1a4010989800643c32022817b7b5918f90ced0cf7dedee067f0e2d8555c2825f00281fdee0df091a0a87485095f4f66f3e3765856d7bffff4ababb0a7a7b70a090c1825f3d7d58166e3e7bc3c2c9e9e8d1e9d1581921218a62033b32003d1800222200633b5e8777005a43008282003112606968773840617961697271b9e3d5a4ccccbae3d3326252c283609ab99a00610079496f09a9a746070fa1b9a129412963838255b5b42848305d877928a130b283934e1e2e0d3d2dc2c0c113a93b0030203f1837c1bfc019b9b766ceb71d5d389bba9b7f4e47b18191c28161158e1d6f807075c5c6d0cecf4b1c2c0044252a9a9b049a2c744d6c00512969c9c8b18292b282924c1d2d4d1d2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90400000000002c00000000100010000008ff00cd6829508000810b172c58206870488b2741f824183080458f3049124c1ca02786220e150c1c3a1420c0c8037f985448b448112203140000402044e6030c140cb074190041911423462cb8b3e40480433b11f5bc42c3888e0556789c5073a8434b44028edcb09385c4981d82506038d0e18d4b011e569421c1a54f1b17581e1cd8c9016d1a0567d0c88940a5860f1349050c52d0c4c9164211a0188a0278d186101364fcc8010887142560e04c69c0f2f18417254ac4a9a302cf1c245e385f8550458204112288ac01e2870d089681107d81e0c081983c1f3e306000a2cb9e451a0a254a8408d1f2e6cbdd202203838e860c2d152dca8e5d91a219360202003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'doc',"mime"=>'application/msword',"friendly"=>'Microsoft Word document',"image"=>pack('H*','47494638396110001000f7000000000000ffff848484c6c6c6ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000005002c0000000010001000000871000b081440b0a04181080b0820c0b02143010004029848b12200020b230208c071e3c68e042a16f0483200800128090cd068b2a3c9010c61ae1ce9d2a44a992a59b6b49952a6c689102fdeec1971a0c3a339112e44c9946952a3481bce842ad5e9548551a51655d8b42bcaad412d5a0c08003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'txt',"mime"=>'text/plain',"friendly"=>'Platte tekst',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c000000001000100000044c904909aab57302640cf74695014e699ac0014c86d3bd6da85225dc3ae9ccdc679dafa41eea405cf17ab262508823168fa7e44375a9e69c2b8d738b1d71898f6996f2dd8e19d72fe28cb66222003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'xls',"mime"=>'application/vnd.ms-excel',"friendly"=>'Excel Workbook',"image"=>pack('H*','47494638396110001000f7000000000000848400ffff848484c6c6c6ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000006002c0000000010001000000873000d081c40b0a04181080d0c28c0b021c30100040298c8702200870b230210206022c78b0d2d6afc089180c993050868dcd8d12201862f5502081080e54c0027638af4d8f265ca9411078acca913e1c2983f1baa349a12254ca04c91fe2c3ab0a949ab50ab3adcba7420d1af4115ee1c0b2020003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'mp3',"mime"=>'audio/mpeg',"friendly"=>'MP3 audio',"image"=>pack('H*','47494638396110001000f70000000000848400848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000006002c0000000010001000000869000d081c38100000820809061000404042840108001840f1a1c08802040c28e0f061c402130b704c18e0a3c48d231516d848002400911d07461cd0f2e4cb981709b004993165c185350dc24c68f063489f0801443c8a33e94201432d1a507a53eacf86560b1e241810003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'gif',"mime"=>'image/gif',"friendly"=>'GIF afbeelding',"image"=>pack('H*','47494638396110001000f7000096f6f569c8ca5dcdcec283627c3d1c7d3c1c7ac2c174c4c596f5f7c38262a9c9c893fbe4a2b3a390b8b898ba9900444591baaa008b1d65876696b5b7a7efeea3ebea7c3d1a7d3d1aa1f1f24c1c2c451e3d4c1d2fb08191b3839337a7a898b8a090baacb182946786678afafbb9c2c1bfc1c086beb51d75450b5a3b3ac2c297d7b216b6b4c3836063322b1e6d4eaac9cb49193f501f18a9c8ca4a1a4010989800643c32022817b7b5918f90ced0cf7dedee067f0e2d8555c2825f00281fdee0df091a0a87485095f4f66f3e3765856d7bffff4ababb0a7a7b70a090c1825f3d7d58166e3e7bc3c2c9e9e8d1e9d1581921218a62033b32003d1800222200633b5e8777005a43008282003112606968773840617961697271b9e3d5a4ccccbae3d3326252c283609ab99a00610079496f09a9a746070fa1b9a129412963838255b5b42848305d877928a130b283934e1e2e0d3d2dc2c0c113a93b0030203f1837c1bfc019b9b766ceb71d5d389bba9b7f4e47b18191c28161158e1d6f807075c5c6d0cecf4b1c2c0044252a9a9b049a2c744d6c00512969c9c8b18292b282924c1d2d4d1d2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90400000000002c00000000100010000008ff00cd6829508000810b172c58206870488b2741f824183080458f3049124c1ca02786220e150c1c3a1420c0c8037f985448b448112203140000402044e6030c140cb074190041911423462cb8b3e40480433b11f5bc42c3888e0556789c5073a8434b44028edcb09385c4981d82506038d0e18d4b011e569421c1a54f1b17581e1cd8c9016d1a0567d0c88940a5860f1349050c52d0c4c9164211a0188a0278d186101364fcc8010887142560e04c69c0f2f18417254ac4a9a302cf1c245e385f8550458204112288ac01e2870d089681107d81e0c081983c1f3e306000a2cb9e451a0a254a8408d1f2e6cbdd202203838e860c2d152dca8e5d91a219360202003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'pdf',"mime"=>'application/pdf',"friendly"=>'PDF document',"image"=>pack('H*','47494638396110001000f70000000000080808848484b5b5b5c6c6c6dededeff3100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000007002c000000001000100040086a000f080440b0a0410002130628c0b0c00001031a162068a0a2458b0024221ce810a2c4860743660c5071e381850d0744d4a8b02181880f550e30194080808f2c39e22c401221808b404706182ad260ce931209dc3c8a92a100a54c192a95f9d026cdaa3b272a2c6a3020003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'bmp',"mime"=>'image/bmp',"friendly"=>'Bitmap image',"image"=>pack('H*','47494638396111001000f700000000000000840000ff00848400ffff5252526363637373738400008484008484849494949c9c9ca5a5a5b5b5b5c6c6c6ce0063d6d6d6dededeefefeff7f7f7ff0000ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000018002c000000001100100000089a0031081c68400180820006124c28b00000000e1962608850a0820b00063c6008c0200603143c5640909140000c09303254f04000809125032478e0716080010220901ca020818504126d0ed099d127508516151c50a094e9d29a032f5eb830418283070f9606b548b3e901030f915a9c3021c283060c1480158be162d9b369d78a95fa7681daad16a7be6d70972d5db368e58a7d4898b0c28000003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'wav',"mime"=>'audio/WAV',"friendly"=>'Wave audio',"image"=>pack('H*','47494638396110001000f70000000000848400848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000006002c0000000010001000000869000d081c38100000820809061000404042840108001840f1a1c08802040c28e0f061c402130b704c18e0a3c48d231516d848002400911d07461cd0f2e4cb981709b004993165c185350dc24c68f063489f0801443c8a33e94201432d1a507a53eacf86560b1e241810003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'dwg',"mime"=>'image/VND.DWG',"friendly"=>'Autocad tekening',"image"=>pack('H*','47494638396110001000f70000ffffffffffccffff99ffff66ffff33ffff00ffccffffccccffcc99ffcc66ffcc33ffcc00ff99ffff99ccff9999ff9966ff9933ff9900ff66ffff66ccff6699ff6666ff6633ff6600ff33ffff33ccff3399ff3366ff3333ff3300ff00ffff00ccff0099ff0066ff0033ff0000ccffffccffccccff99ccff66ccff33ccff00ccccffcccccccccc99cccc66cccc33cccc00cc99ffcc99cccc9999cc9966cc9933cc9900cc66ffcc66cccc6699cc6666cc6633cc6600cc33ffcc33cccc3399cc3366cc3333cc3300cc00ffcc00cccc0099cc0066cc0033cc000099ffff99ffcc99ff9999ff6699ff3399ff0099ccff99cccc99cc9999cc6699cc3399cc009999ff9999cc9999999999669999339999009966ff9966cc9966999966669966339966009933ff9933cc9933999933669933339933009900ff9900cc99009999006699003399000066ffff66ffcc66ff9966ff6666ff3366ff0066ccff66cccc66cc9966cc6666cc3366cc006699ff6699cc6699996699666699336699006666ff6666cc6666996666666666336666006633ff6633cc6633996633666633336633006600ff6600cc66009966006666003366000033ffff33ffcc33ff9933ff6633ff3333ff0033ccff33cccc33cc9933cc6633cc3333cc003399ff3399cc3399993399663399333399003366ff3366cc3366993366663366333366003333ff3333cc3333993333663333333333003300ff3300cc33009933006633003333000000ffff00ffcc00ff9900ff6600ff3300ff0000ccff00cccc00cc9900cc6600cc3300cc000099ff0099cc0099990099660099330099000066ff0066cc0066990066660066330066000033ff0033cc0033990033660033330033000000ff0000cc000099000066000033000000ad0b10ae262eb5848779020dd50918e81626a94950d06f76f74657f9354cfef3f5fffbfcffeefafef5ff403c43f1f5f9f1fffb2b4037e4faefedfff6ccd6c751564ef6fcf2c5cebbdde3d5f1f4e3fdfef68080732a2823ae9c90b65721e8d7cfede5e3cfada7714e4ae14540fe7673492424faebebffffff21f904010000ff002c00000000100010000008e300ff091c48b0e0bf7ef45899a367ce9c42560c150a0cc4ee1dbc8befd8ad8877ef1ebe7c02dbad9b4792a4959281e6f5bb764ddfb947dbd660c3b6a626b72333d53c0ae4ef91b76ce0f865dbb7af5bb870d9bc6d0b34ee510e6cfc1e54b060e1080770ddbc3d6a27ef11196e15ca04a980cd2a366e5a03ad7bf48d1f3f7b651e48ade036dfb576e8667d2be340ee0c1d418862d337ab9dbf6d64ba710337a2db086edcbcd29b1508dfb61cdcc281e3d68d83e76dd9ea414cd7af4bb61ffc8c800377ba5fbe4003fbf5dbb60dc84c6cb4116923488f5ebb84be03b50b04dba0f1820101003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'exe',"mime"=>'application/octet-stream',"friendly"=>'Application',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c000000001000100000044b90c9492b4338eb8d8fffe08700c8419c687a8ea54a3c000cb3076793c7a3efbc4ef383418cf7db011642226e37586000835d5107382c86be250f80cd967ae007cb76e39acf68ae653d8900003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'url',"mime"=>'application/octet-stream',"friendly"=>'Hyperlink',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000d002c0000000010001000000458b049446b9578becddf4199d66dc7036608c7301be00219b132c4c392b0440ccb5c7387dcaeb791fd3c39decc07840d0ec651b33118c81807286d3a6000aeab2352c27a01529d208681968e3188ac7caec698efaf905e1f01003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'zip',"mime"=>'application/x-zip-compressed',"friendly"=>'Winzip archive',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c000000001000100000044b90c9c980bd80527050ff997455d87564c0322cc0e3be0f80a0eb505af159a97ccdc6b38a6fd8e2a07ac8621030ec1575a9e64a89badd741a8e67db0965ad9a700521de58662331060d8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'html',"mime"=>'text/HTML',"friendly"=>'HTML pagina',"image"=>pack('H*','47494638396110001000f700000000000000840000ff00840000848400ffff848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f9040100000a002c000000001000100000087e0015081c48b0e040030813223428d0408204081e265868d040c487111d1aa8885122808f000a5a4c708080c90310016c3c48924001020308a05449d0a2cc0402605aa4c99200c90101040448c0b321020302040c101a004151050e0f040d1000c0cc9546498244e9142bd48e609f8e049bd22bc8b367bd4255c876654000003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'htm',"mime"=>'text/HTML',"friendly"=>'HTML page',"image"=>pack('H*','47494638396110001000f700000000000000840000ff00840000848400ffff848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f9040100000a002c000000001000100000087e0015081c48b0e040030813223428d0408204081e265868d040c487111d1aa8885122808f000a5a4c708080c90310016c3c48924001020308a05449d0a2cc0402605aa4c99200c90101040448c0b321020302040c101a004151050e0f040d1000c0cc9546498244e9142bd48e609f8e049bd22bc8b367bd4255c876654000003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'tar',"mime"=>'application/X-TAR',"friendly"=>'Tarbal archief',"image"=>pack('H*','47494638396110001000f70000000000848400848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000006002c000000001000100000086a000d081c08a0a0410003131a00304040c38708051a5c78d0e000840008042000a080c78f050008c0b83140c582212f2ed4c8b224c7902317ba9cd99121c696386bc60430b3654d95197b6ed489f1e449950a193a5cda306252a30aa32e142035a1c19113a51ec48a3020003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'reg',"mime"=>'application/octet-stream',"friendly"=>'Windows register file',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c000000001000100000045390c93911bd173d8031328ec1599df4018fc65548dba25fb87ec6f38806029ca6b3f938806806141a86c215432303386fc9ca51086d2a11c0e254547984bcc8a8e948aec9b8bd5b16aa5c82dfb28b734e6f4b22003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'psd',"mime"=>'application/octet-stream',"friendly"=>'Adobe photoshop image',"image"=>pack('H*','47494638396110001000f70000000000080808848484b5b5b5c6c6c6dededeff3100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000007002c000000001000100040086a000f080440b0a0410002130628c0b0c00001031a162068a0a2458b0024221ce810a2c4860743660c5071e381850d0744d4a8b02181880f550e30194080808f2c39e22c401221808b404706182ad260ce931209dc3c8a92a100a54c192a95f9d026cdaa3b272a2c6a3020003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'csv',"mime"=>'application/octet-stream',"friendly"=>'Comma Separated Values',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'mpe',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000f7000000000000008400848400ffff848484c6c6c6ff0000ffff84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000007002c000000001000100000087b000f083c40a0a0418303131240c0b021820204120a5ce8906101041115566408a023008d1b2d0210309062c80223050c10c0b2a5008605510ae838a026809a3305100080f2a3c79b386fa244295065cda33347f2fc784080019b0300040080a023d1033f3b4ea52a12e449a61343762d59a0acd9b360b1665d1b10003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'mpg',"mime"=>'application/OCTET-STREAM',"friendly"=>'MPEG Video Clip',"image"=>pack('H*','47494638396110001000f7000000000000008400848400ffff848484c6c6c6ff0000ffff84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000007002c000000001000100000087b000f083c40a0a0418303131240c0b021820204120a5ce8906101041115566408a023008d1b2d0210309062c80223050c10c0b2a5008605510ae838a026809a3305100080f2a3c79b386fa244295065cda33347f2fc784080019b0300040080a023d1033f3b4ea52a12e449a61343762d59a0acd9b360b1665d1b10003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'PCX',"mime"=>'application/octet-stream',"friendly"=>'PCX image',"image"=>pack('H*','47494638396110001000f7000096f6f569c8ca5dcdcec283627c3d1c7d3c1c7ac2c174c4c596f5f7c38262a9c9c893fbe4a2b3a390b8b898ba9900444591baaa008b1d65876696b5b7a7efeea3ebea7c3d1a7d3d1aa1f1f24c1c2c451e3d4c1d2fb08191b3839337a7a898b8a090baacb182946786678afafbb9c2c1bfc1c086beb51d75450b5a3b3ac2c297d7b216b6b4c3836063322b1e6d4eaac9cb49193f501f18a9c8ca4a1a4010989800643c32022817b7b5918f90ced0cf7dedee067f0e2d8555c2825f00281fdee0df091a0a87485095f4f66f3e3765856d7bffff4ababb0a7a7b70a090c1825f3d7d58166e3e7bc3c2c9e9e8d1e9d1581921218a62033b32003d1800222200633b5e8777005a43008282003112606968773840617961697271b9e3d5a4ccccbae3d3326252c283609ab99a00610079496f09a9a746070fa1b9a129412963838255b5b42848305d877928a130b283934e1e2e0d3d2dc2c0c113a93b0030203f1837c1bfc019b9b766ceb71d5d389bba9b7f4e47b18191c28161158e1d6f807075c5c6d0cecf4b1c2c0044252a9a9b049a2c744d6c00512969c9c8b18292b282924c1d2d4d1d2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90400000000002c00000000100010000008ff00cd6829508000810b172c58206870488b2741f824183080458f3049124c1ca02786220e150c1c3a1420c0c8037f985448b448112203140000402044e6030c140cb074190041911423462cb8b3e40480433b11f5bc42c3888e0556789c5073a8434b44028edcb09385c4981d82506038d0e18d4b011e569421c1a54f1b17581e1cd8c9016d1a0567d0c88940a5860f1349050c52d0c4c9164211a0188a0278d186101364fcc8010887142560e04c69c0f2f18417254ac4a9a302cf1c245e385f8550458204112288ac01e2870d089681107d81e0c081983c1f3e306000a2cb9e451a0a254a8408d1f2e6cbdd202203838e860c2d152dca8e5d91a219360202003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'tif',"mime"=>'application/octet-stream',"friendly"=>'TIF afbeelding',"image"=>pack('H*','47494638396110001000f7000096f6f569c8ca5dcdcec283627c3d1c7d3c1c7ac2c174c4c596f5f7c38262a9c9c893fbe4a2b3a390b8b898ba9900444591baaa008b1d65876696b5b7a7efeea3ebea7c3d1a7d3d1aa1f1f24c1c2c451e3d4c1d2fb08191b3839337a7a898b8a090baacb182946786678afafbb9c2c1bfc1c086beb51d75450b5a3b3ac2c297d7b216b6b4c3836063322b1e6d4eaac9cb49193f501f18a9c8ca4a1a4010989800643c32022817b7b5918f90ced0cf7dedee067f0e2d8555c2825f00281fdee0df091a0a87485095f4f66f3e3765856d7bffff4ababb0a7a7b70a090c1825f3d7d58166e3e7bc3c2c9e9e8d1e9d1581921218a62033b32003d1800222200633b5e8777005a43008282003112606968773840617961697271b9e3d5a4ccccbae3d3326252c283609ab99a00610079496f09a9a746070fa1b9a129412963838255b5b42848305d877928a130b283934e1e2e0d3d2dc2c0c113a93b0030203f1837c1bfc019b9b766ceb71d5d389bba9b7f4e47b18191c28161158e1d6f807075c5c6d0cecf4b1c2c0044252a9a9b049a2c744d6c00512969c9c8b18292b282924c1d2d4d1d2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90400000000002c00000000100010000008ff00cd6829508000810b172c58206870488b2741f824183080458f3049124c1ca02786220e150c1c3a1420c0c8037f985448b448112203140000402044e6030c140cb074190041911423462cb8b3e40480433b11f5bc42c3888e0556789c5073a8434b44028edcb09385c4981d82506038d0e18d4b011e569421c1a54f1b17581e1cd8c9016d1a0567d0c88940a5860f1349050c52d0c4c9164211a0188a0278d186101364fcc8010887142560e04c69c0f2f18417254ac4a9a302cf1c245e385f8550458204112288ac01e2870d089681107d81e0c081983c1f3e306000a2cb9e451a0a254a8408d1f2e6cbdd202203838e860c2d152dca8e5d91a219360202003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'pps',"mime"=>'application/VND.MS-POWERPOINT',"friendly"=>'Powerpoint presentation',"image"=>pack('H*','47494638396110001000e64200e09d80ec9a74ea9a79707070c7a697de9e856b1c00feffffa7471fdf9e7e7f7f7fdee0dffff7e8fefefe6a5042b34313fff8e6dedede3c3c3ca74717bebebe1f1f1f90573bca6a42a94919727272717171ffd7af909090ffefd69b4a2cee9d7fc6a7959b4c23d66636be6e4d606062fff7e5ea9b72bfbfbfb27259c7a896ffeacc6161639b9b9b8888882020205737286747385757579a492b5f5f5fff9262601f00020202684e429d4b25a84816a84818f79765606060efefeff797679c9c9cdfdfdfffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90401000042002c00000000100010000007a7804242412f25100c0c418a411a82420e0e3730292004040d8b1c1582183e3b3b02023e3a40a54114272e423a3e393923a23a11a60a0a2d36393b280522343e138bc13cb91d050f0fa3c18b3cac1f2a1b173b393da5a641cc3e321e0808d2d4d58a3321260909000001388a07078b2b06063516e70101d40b0b408a248e038b3ddf4a61e2e12883b2830405f95304b09abe6bfd0e2a4b2844c28f8b182fb2b818c391c78f1e0301003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'mpeg',"mime"=>'application/OCTET-STREAM',"friendly"=>'MPEG Video Clip',"image"=>pack('H*','47494638396110001000f7000000000000008400848400ffff848484c6c6c6ff0000ffff84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000007002c000000001000100000087b000f083c40a0a0418303131240c0b021820204120a5ce8906101041115566408a023008d1b2d0210309062c80223050c10c0b2a5008605510ae838a026809a3305100080f2a3c79b386fa244295065cda33347f2fc784080019b0300040080a023d1033f3b4ea52a12e449a61343762d59a0acd9b360b1665d1b10003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'avi',"mime"=>'application/OCTET-STREAM',"friendly"=>'AVI Video Clip',"image"=>pack('H*','47494638396110001000f70000000000848484c6c6c6ff0000ffff84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000004002c00000000100010000008700009082410a0a0418303130628c0b061010101120a5ce890a180021115566408a023008d1b2d02c84830a4c882100f166488726447013001c00c3092a6808e043cca9c09e0a1cc8f04610a85d8d126d0000362dea459e025509d501bde041972ea408a55814e1ccad5aa40a860010404003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'tgz',"mime"=>'application/X-GZIP-COMPRESSED',"friendly"=>'Tarbal gecomprimeerd archief',"image"=>pack('H*','47494638396110001000f70000000000848400848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000006002c000000001000100000086a000d081c08a0a0410003131a00304040c38708051a5c78d0e000840008042000a080c78f050008c0b83140c582212f2ed4c8b224c7902317ba9cd99121c696386bc60430b3654d95197b6ed489f1e449950a193a5cda306252a30aa32e142035a1c19113a51ec48a3020003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'asf',"mime"=>'application/OCTET-STREAM',"friendly"=>'ASF video clip',"image"=>pack('H*','47494638396110001000f70000000000848484c6c6c6ff0000ffff84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000004002c00000000100010000008700009082410a0a0418303130628c0b061010101120a5ce890a180021115566408a023008d1b2d02c84830a4c882100f166488726447013001c00c3092a6808e043cca9c09e0a1cc8f04610a85d8d126d0000362dea459e025509d501bde041972ea408a55814e1ccad5aa40a860010404003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'php',"mime"=>'text/PLAIN',"friendly"=>'PHP web page',"image"=>pack('H*','47494638396110001000f700000000000000840000ff00840000848400ffff848400848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f9040100000b002c00000000100010000008920017081478a0a0418303131e50904081c3040b0f2424e890a1c3850a242ab4581180470013312a4040922102901b111c2840a0e04894030f40248060c0800324611ad86900a70002377182dc09200100031e0710081020e7020309a246451a60e9c2933b132085fab1a9c9a351011c28aa150047ac50b71af55831c1c9a752a77a244917e4d1a277c57efc3870efc4840101003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'bas',"mime"=>'text/plain',"friendly"=>'text/plain',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'scr',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'vcf',"mime"=>'text/PLAIN',"friendly"=>'text/PLAIN',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'sim',"mime"=>'text/plain',"friendly"=>'text/plain',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'sh',"mime"=>'text/PLAIN',"friendly"=>'text/PLAIN',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'jpeg',"mime"=>'application/OCTET-STREAM',"friendly"=>'JPEG image',"image"=>pack('H*','47494638396110001000f7000096f6f569c8ca5dcdcec283627c3d1c7d3c1c7ac2c174c4c596f5f7c38262a9c9c893fbe4a2b3a390b8b898ba9900444591baaa008b1d65876696b5b7a7efeea3ebea7c3d1a7d3d1aa1f1f24c1c2c451e3d4c1d2fb08191b3839337a7a898b8a090baacb182946786678afafbb9c2c1bfc1c086beb51d75450b5a3b3ac2c297d7b216b6b4c3836063322b1e6d4eaac9cb49193f501f18a9c8ca4a1a4010989800643c32022817b7b5918f90ced0cf7dedee067f0e2d8555c2825f00281fdee0df091a0a87485095f4f66f3e3765856d7bffff4ababb0a7a7b70a090c1825f3d7d58166e3e7bc3c2c9e9e8d1e9d1581921218a62033b32003d1800222200633b5e8777005a43008282003112606968773840617961697271b9e3d5a4ccccbae3d3326252c283609ab99a00610079496f09a9a746070fa1b9a129412963838255b5b42848305d877928a130b283934e1e2e0d3d2dc2c0c113a93b0030203f1837c1bfc019b9b766ceb71d5d389bba9b7f4e47b18191c28161158e1d6f807075c5c6d0cecf4b1c2c0044252a9a9b049a2c744d6c00512969c9c8b18292b282924c1d2d4d1d2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90400000000002c00000000100010000008ff00cd6829508000810b172c58206870488b2741f824183080458f3049124c1ca02786220e150c1c3a1420c0c8037f985448b448112203140000402044e6030c140cb074190041911423462cb8b3e40480433b11f5bc42c3888e0556789c5073a8434b44028edcb09385c4981d82506038d0e18d4b011e569421c1a54f1b17581e1cd8c9016d1a0567d0c88940a5860f1349050c52d0c4c9164211a0188a0278d186101364fcc8010887142560e04c69c0f2f18417254ac4a9a302cf1c245e385f8550458204112288ac01e2870d089681107d81e0c081983c1f3e306000a2cb9e451a0a254a8408d1f2e6cbdd202203838e860c2d152dca8e5d91a219360202003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'xkr',"mime"=>'application/octet-stream',"friendly"=>'application/octet-stream',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'dat',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'wmv',"mime"=>'video/X-MS-WMV',"friendly"=>'Windows Media Video',"image"=>pack('H*','47494638396110001000f7000000000000008400848400ffff848484c6c6c6ff0000ffff84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000007002c000000001000100000087b000f083c40a0a0418303131240c0b021820204120a5ce8906101041115566408a023008d1b2d0210309062c80223050c10c0b2a5008605510ae838a026809a3305100080f2a3c79b386fa244295065cda33347f2fc784080019b0300040080a023d1033f3b4ea52a12e449a61343762d59a0acd9b360b1665d1b10003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'inc',"mime"=>'text/plain',"friendly"=>'PHP inclusion',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'sql',"mime"=>'text/plain',"friendly"=>'SQL file',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c000000001000100000044c904909aab57302640cf74695014e699ac0014c86d3bd6da85225dc3ae9ccdc679dafa41eea405cf17ab262508823168fa7e44375a9e69c2b8d738b1d71898f6996f2dd8e19d72fe28cb66222003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'ppt',"mime"=>'application/vnd.ms-powerpoint',"friendly"=>'Powerpoint presentation',"image"=>pack('H*','47494638396110001000f7000000000000ffff840000848484c6c6c6ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000006002c0000000010001000000870000d081c40b0a04181080d0c28c0b0214382030d1a6cb8708042870d016404c0712101830400101849a040c88a020208181012e3c9020304a4642992a4490015416a74f89224c99a236f0ee04894a84b0008179a34e9f366528c479f2ef55932a454a80cad0ea4ca15e9c0a260890604003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'',"mime"=>'',"friendly"=>'Onbekend',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'db',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000f70000000000848400848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000006002c0000000010001000000878000d081440b0a04181080d0828c0b02143010010028008c061c385110110d81800c0808f1f0b001839918046932043321c3032c046930e07346439314000013057cecc389220ca940558228428c0a5479041230e1459b4a24ea14b457a9c9974a8ce9855a3a6440a55a1458b5d056c1dab5421c9b3680302003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'tpl',"mime"=>'application/OCTET-STREAM',"friendly"=>'Template file',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'css',"mime"=>'text/css',"friendly"=>'Custom Style Sheet',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'lock',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'cfg',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'conf',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'deny',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'misc',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'pal',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'save',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'net',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'defs',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'rc',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'jar',"mime"=>'Array',"friendly"=>'Java source file',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'png',"mime"=>'image/png',"friendly"=>'image/png',"image"=>pack('H*','47494638396111001000f700000000000000840000ff00848400ffff5252526363637373738400008484008484849494949c9c9ca5a5a5b5b5b5c6c6c6ce0063d6d6d6dededeefefeff7f7f7ff0000ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000018002c000000001100100000089a0031081c68400180820006124c28b00000000e1962608850a0820b00063c6008c0200603143c5640909140000c09303254f04000809125032478e0716080010220901ca020818504126d0ed099d127508516151c50a094e9d29a032f5eb830418283070f9606b548b3e901030f915a9c3021c283060c1480158be162d9b369d78a95fa7681daad16a7be6d70972d5db368e58a7d4898b0c28000003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'cnf',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'bak',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'ini',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'old',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'key',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'cron',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'xterm',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'login',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'modes',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'cshrc',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'allow',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'cache',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'perms',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'types',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'users',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'local',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'js',"mime"=>'application/x-javascript',"friendly"=>'application/x-javascript',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'exp',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'xml',"mime"=>'text/xml',"friendly"=>'XML file',"image"=>pack('H*','47494638396110001000f7000000000000008400009c0000ff00848431639c3163ff319c00319cff31ceff31ffff848484a5cef7c6c6c6f7f7f7ffff84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f9040100000f002c00000000100010000008830017081c4850e083830f164058c8b06183050815365ce800828306102026a468b163450020016c74c0a0220102062c96842052210301100840508020000401255bbeb44840418203012ae26c0961a701040706d8c4e98028c98a01a2aafcb8d1a3d58a4d4716d8ca952b558958af5a74dab5ec578e61d33a151b5664c8b770433e0808003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'pl',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'jpe',"mime"=>'image/jpeg',"friendly"=>'JPEG image',"image"=>pack('H*','47494638396111001000f700000000000000840000ff00848400ffff5252526363637373738400008484008484849494949c9c9ca5a5a5b5b5b5c6c6c6ce0063d6d6d6dededeefefeff7f7f7ff0000ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000018002c000000001100100000089a0031081c68400180820006124c28b00000000e1962608850a0820b00063c6008c0200603143c5640909140000c09303254f04000809125032478e0716080010220901ca020818504126d0ed099d127508516151c50a094e9d29a032f5eb830418283070f9606b548b3e901030f915a9c3021c283060c1480158be162d9b369d78a95fa7681daad16a7be6d70972d5db368e58a7d4898b0c28000003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'lnk',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'wmf',"mime"=>'application/OCTET-STREAM',"friendly"=>'Windows Media File',"image"=>pack('H*','47494638396110001000f70000000000848484c6c6c6ff0000ffff84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000004002c00000000100010000008700009082410a0a0418303130628c0b061010101120a5ce890a180021115566408a023008d1b2d02c84830a4c882100f166488726447013001c00c3092a6808e043cca9c09e0a1cc8f04610a85d8d126d0000362dea459e025509d501bde041972ea408a55814e1ccad5aa40a860010404003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'JOB',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'jof',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'pm4',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'dxf',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'dft',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'asm',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'par',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'dmp',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'frm',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'frx',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'cls',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'PDM',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'vbp',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'vbw',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'ICO',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'SCC',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'log',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'tlb',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'dll',"mime"=>'application/octet-stream',"friendly"=>'application/octet-stream',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'OCX',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'BAT',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'DDF',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'Lst',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'CAB',"mime"=>'application/OCTET-STREAM',"friendly"=>'Windows cabinet archive',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'mdb',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000f70000000000848400848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000006002c0000000010001000000878000d081440b0a04181080d0828c0b02143010010028008c061c385110110d81800c0808f1f0b001839918046932043321c3032c046930e07346439314000013057cecc389220ca940558228428c0a5479041230e1459b4a24ea14b457a9c9974a8ce9855a3a6440a55a1458b5d056c1dab5421c9b3680302003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'dist',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'hist',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'rar',"mime"=>'application/OCTET-STREAM',"friendly"=>'WinRAR archive',"image"=>pack('H*','47494638396110001000f70000000000848400848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000006002c000000001000100000086a000d081c08a0a0410003131a00304040c38708051a5c78d0e000840008042000a080c78f050008c0b83140c582212f2ed4c8b224c7902317ba9cd99121c696386bc60430b3654d95197b6ed489f1e449950a193a5cda306252a30aa32e142035a1c19113a51ec48a3020003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'fla',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'swf',"mime"=>'application/x-shockwave-flash',"friendly"=>'application/x-shockwave-flash',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'en',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'jis',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'fig',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'tsv',"mime"=>'text/tab-separated-values',"friendly"=>'text/tab-separated-values',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'wml',"mime"=>'text/vnd.wap.wml',"friendly"=>'text/vnd.wap.wml',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'cgi',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'fr',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'mov',"mime"=>'application/OCTET-STREAM',"friendly"=>'Movie clip',"image"=>pack('H*','47494638396110001000f70000000000848484c6c6c6ff0000ffff84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000004002c00000000100010000008700009082410a0a0418303130628c0b061010101120a5ce890a180021115566408a023008d1b2d02c84830a4c882100f166488726447013001c00c3092a6808e043cca9c09e0a1cc8f04610a85d8d126d0000362dea459e025509d501bde041972ea408a55814e1ccad5aa40a860010404003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'gz',"mime"=>'application/x-gzip',"friendly"=>'Gzip compressed archive',"image"=>pack('H*','47494638396110001000f70000000000848400848484c6c6c6ffff00ffffffffffc0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21f90401000006002c000000001000100000086a000d081c08a0a0410003131a00304040c38708051a5c78d0e000840008042000a080c78f050008c0b83140c582212f2ed4c8b224c7902317ba9cd99121c696386bc60430b3654d95197b6ed489f1e449950a193a5cda306252a30aa32e142035a1c19113a51ec48a3020003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'rpm',"mime"=>'application/x-rpm',"friendly"=>'RPM Package',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'ai',"mime"=>'application/postscript',"friendly"=>'Adobe Illustrator file',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'eml',"mime"=>'message/RFC822',"friendly"=>'message/RFC822',"image"=>pack('H*','47494638396110001000c4ff00ffffff00ffffc0c0c080808000808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90401000002002c0000000010001000400537a0208e64290c400a146cabae432ccf7481bef85b98fc88ba39002160d3b558ba9e72c95cde82aa61111a254ca9aa2b7675ec7a77cd5108003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'aspx',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'cs',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'resx',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'ascx',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'err',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'ils',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'xdp',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'trc',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'sam',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'rtf',"mime"=>'text/RICHTEXT',"friendly"=>'Rich text format',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'rnd',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'map',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'ja',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'0',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'h',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'b',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'img',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'pif',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'abw',"mime"=>'application/ABIWORD',"friendly"=>'application/ABIWORD',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'ps',"mime"=>'application/POSTSCRIPT',"friendly"=>'application/POSTSCRIPT',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'dir',"mime"=>'application/x-director',"friendly"=>'application/x-director',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'adr',"mime"=>'application/octet-stream',"friendly"=>'application/octet-stream',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'sxw',"mime"=>'application/OCTET-STREAM',"friendly"=>'application/OCTET-STREAM',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'plt',"mime"=>'Array',"friendly"=>'Array',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - $oProc->insert("phpgw_vfs2_mimetypes", array("extension"=>'(n/a)',"mime"=>'Directory',"friendly"=>'Directory',"image"=>pack('H*','47494638396110001000b30000000000800000008000808000000080800080008080c0c0c0808080ff000000ff00ffff000000ffff00ff00ffffffffff21f9040100000c002c0000000010001000000452f0a1492b6298c9c77b3f40b679def1841a4296409b4a5675be083110780ecc5b9dffbb506fc509d21e8b004773e2a95481c483e1d018870fe54320680a9f44efab452e5f55e1cef7c06ebbd942b39ccc8800003b')),array(),__LINE__,__FILE__); - - } - -?> diff --git a/phpgwapi/setup/setup.inc.php b/phpgwapi/setup/setup.inc.php index b6add51d28..0493058ad3 100755 --- a/phpgwapi/setup/setup.inc.php +++ b/phpgwapi/setup/setup.inc.php @@ -1,77 +1,66 @@ array( - 'fd' => array( - 'config_app' => array('type' => 'varchar','precision' => '50','nullable' => False), - 'config_name' => array('type' => 'varchar','precision' => '255','nullable' => False), - 'config_value' => array('type' => 'text') - ), - 'pk' => array('config_app','config_name'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() +$phpgw_baseline = array( + 'egw_config' => array( + 'fd' => array( + 'config_app' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'config_name' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'config_value' => array('type' => 'text') ), - 'egw_applications' => array( - 'fd' => array( - 'app_id' => array('type' => 'auto','precision' => '4','nullable' => False), - 'app_name' => array('type' => 'varchar','precision' => '25','nullable' => False), - 'app_enabled' => array('type' => 'int','precision' => '4','nullable' => False), - 'app_order' => array('type' => 'int','precision' => '4','nullable' => False), - 'app_tables' => array('type' => 'text','nullable' => False), - 'app_version' => array('type' => 'varchar','precision' => '20','nullable' => False,'default' => '0.0') - ), - 'pk' => array('app_id'), - 'fk' => array(), - 'ix' => array(array('app_enabled','app_order')), - 'uc' => array('app_name') + 'pk' => array('config_app','config_name'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_applications' => array( + 'fd' => array( + 'app_id' => array('type' => 'auto','precision' => '4','nullable' => False), + 'app_name' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'app_enabled' => array('type' => 'int','precision' => '4','nullable' => False), + 'app_order' => array('type' => 'int','precision' => '4','nullable' => False), + 'app_tables' => array('type' => 'text','nullable' => False), + 'app_version' => array('type' => 'varchar','precision' => '20','nullable' => False,'default' => '0.0') ), - 'egw_acl' => array( - 'fd' => array( - 'acl_appname' => array('type' => 'varchar','precision' => '50','nullable' => False), - 'acl_location' => array('type' => 'varchar','precision' => '255','nullable' => False), - 'acl_account' => array('type' => 'int','precision' => '4','nullable' => False), - 'acl_rights' => array('type' => 'int','precision' => '4') - ), - 'pk' => array('acl_appname','acl_location','acl_account'), - 'fk' => array(), - 'ix' => array('acl_account',array('acl_location','acl_account'),array('acl_appname','acl_account')), - 'uc' => array() + 'pk' => array('app_id'), + 'fk' => array(), + 'ix' => array(array('app_enabled','app_order')), + 'uc' => array('app_name') + ), + 'egw_acl' => array( + 'fd' => array( + 'acl_appname' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'acl_location' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'acl_account' => array('type' => 'int','precision' => '4','nullable' => False), + 'acl_rights' => array('type' => 'int','precision' => '4') ), - 'egw_accounts' => array( - 'fd' => array( - 'account_id' => array('type' => 'auto','nullable' => False), - 'account_lid' => array('type' => 'varchar','precision' => '64','nullable' => False), - 'account_pwd' => array('type' => 'varchar','precision' => '100','nullable' => False), - 'account_lastlogin' => array('type' => 'int','precision' => '4'), - 'account_lastloginfrom' => array('type' => 'varchar','precision' => '255'), - 'account_lastpwd_change' => array('type' => 'int','precision' => '4'), - 'account_status' => array('type' => 'char','precision' => '1','nullable' => False,'default' => 'A'), - 'account_expires' => array('type' => 'int','precision' => '4'), - 'account_type' => array('type' => 'char','precision' => '1'), - 'account_primary_group' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0') - ), - 'pk' => array('account_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array('account_lid') + 'pk' => array('acl_appname','acl_location','acl_account'), + 'fk' => array(), + 'ix' => array('acl_account',array('acl_location','acl_account'),array('acl_appname','acl_account')), + 'uc' => array() + ), + 'egw_accounts' => array( + 'fd' => array( + 'account_id' => array('type' => 'auto','nullable' => False), + 'account_lid' => array('type' => 'varchar','precision' => '64','nullable' => False), + 'account_pwd' => array('type' => 'varchar','precision' => '100','nullable' => False), + 'account_lastlogin' => array('type' => 'int','precision' => '4'), + 'account_lastloginfrom' => array('type' => 'varchar','precision' => '255'), + 'account_lastpwd_change' => array('type' => 'int','precision' => '4'), + 'account_status' => array('type' => 'char','precision' => '1','nullable' => False,'default' => 'A'), + 'account_expires' => array('type' => 'int','precision' => '4'), + 'account_type' => array('type' => 'char','precision' => '1'), + 'account_primary_group' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0') ), - 'egw_preferences' => array( - 'fd' => array( - 'preference_owner' => array('type' => 'int','precision' => '4','nullable' => False), - 'preference_app' => array('type' => 'varchar','precision' => '25','nullable' => False), - 'preference_value' => array('type' => 'text','nullable' => False) - ), - 'pk' => array('preference_owner','preference_app'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('account_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array('account_lid') + ), + 'egw_preferences' => array( + 'fd' => array( + 'preference_owner' => array('type' => 'int','precision' => '4','nullable' => False), + 'preference_app' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'preference_value' => array('type' => 'text','nullable' => False) ), - 'egw_sessions' => array( - 'fd' => array( - 'session_id' => array('type' => 'varchar','precision' => '128','nullable' => False), - 'session_lid' => array('type' => 'varchar','precision' => '128'), - 'session_ip' => array('type' => 'varchar','precision' => '40'), - 'session_logintime' => array('type' => 'int','precision' => '8'), - 'session_dla' => array('type' => 'int','precision' => '8'), - 'session_action' => array('type' => 'varchar','precision' => '255'), - 'session_flags' => array('type' => 'char','precision' => '2') - ), - 'pk' => array('session_id'), - 'fk' => array(), - 'ix' => array(array('session_flags','session_dla')), - 'uc' => array() + 'pk' => array('preference_owner','preference_app'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_sessions' => array( + 'fd' => array( + 'session_id' => array('type' => 'varchar','precision' => '128','nullable' => False), + 'session_lid' => array('type' => 'varchar','precision' => '128'), + 'session_ip' => array('type' => 'varchar','precision' => '40'), + 'session_logintime' => array('type' => 'int','precision' => '8'), + 'session_dla' => array('type' => 'int','precision' => '8'), + 'session_action' => array('type' => 'varchar','precision' => '255'), + 'session_flags' => array('type' => 'char','precision' => '2') ), - 'egw_app_sessions' => array( - 'fd' => array( - 'sessionid' => array('type' => 'varchar','precision' => '128','nullable' => False), - 'loginid' => array('type' => 'int','precision' => '4','nullable' => False), - 'app' => array('type' => 'varchar','precision' => '25','nullable' => False), - 'location' => array('type' => 'varchar','precision' => '128','nullable' => False), - 'content' => array('type' => 'longtext'), - 'session_dla' => array('type' => 'int','precision' => '8') - ), - 'pk' => array('sessionid','loginid','app','location'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('session_id'), + 'fk' => array(), + 'ix' => array(array('session_flags','session_dla')), + 'uc' => array() + ), + 'egw_app_sessions' => array( + 'fd' => array( + 'sessionid' => array('type' => 'varchar','precision' => '128','nullable' => False), + 'loginid' => array('type' => 'int','precision' => '4','nullable' => False), + 'app' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'location' => array('type' => 'varchar','precision' => '128','nullable' => False), + 'content' => array('type' => 'longtext'), + 'session_dla' => array('type' => 'int','precision' => '8') ), - 'egw_access_log' => array( - 'fd' => array( - 'sessionid' => array('type' => 'char','precision' => '128','nullable' => False), - 'loginid' => array('type' => 'varchar','precision' => '64','nullable' => False), - 'ip' => array('type' => 'varchar','precision' => '40','nullable' => False), - 'li' => array('type' => 'int','precision' => '4','nullable' => False), - 'lo' => array('type' => 'int','precision' => '4','default' => '0'), - 'account_id' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0') - ), - 'pk' => array(), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('sessionid','loginid','app','location'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_access_log' => array( + 'fd' => array( + 'sessionid' => array('type' => 'char','precision' => '128','nullable' => False), + 'loginid' => array('type' => 'varchar','precision' => '64','nullable' => False), + 'ip' => array('type' => 'varchar','precision' => '40','nullable' => False), + 'li' => array('type' => 'int','precision' => '4','nullable' => False), + 'lo' => array('type' => 'int','precision' => '4','default' => '0'), + 'account_id' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0') ), - 'egw_hooks' => array( - 'fd' => array( - 'hook_id' => array('type' => 'auto','nullable' => False), - 'hook_appname' => array('type' => 'varchar','precision' => '255'), - 'hook_location' => array('type' => 'varchar','precision' => '255'), - 'hook_filename' => array('type' => 'varchar','precision' => '255') - ), - 'pk' => array('hook_id'), - 'ix' => array(), - 'fk' => array(), - 'uc' => array() + 'pk' => array(), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_hooks' => array( + 'fd' => array( + 'hook_id' => array('type' => 'auto','nullable' => False), + 'hook_appname' => array('type' => 'varchar','precision' => '255'), + 'hook_location' => array('type' => 'varchar','precision' => '255'), + 'hook_filename' => array('type' => 'varchar','precision' => '255') ), - 'egw_languages' => array( - 'fd' => array( - 'lang_id' => array('type' => 'varchar','precision' => '5','nullable' => False), - 'lang_name' => array('type' => 'varchar','precision' => '50','nullable' => False) - ), - 'pk' => array('lang_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('hook_id'), + 'ix' => array(), + 'fk' => array(), + 'uc' => array() + ), + 'egw_languages' => array( + 'fd' => array( + 'lang_id' => array('type' => 'varchar','precision' => '5','nullable' => False), + 'lang_name' => array('type' => 'varchar','precision' => '50','nullable' => False) ), - 'egw_lang' => array( - 'fd' => array( - 'lang' => array('type' => 'varchar','precision' => '5','nullable' => False,'default' => ''), - 'app_name' => array('type' => 'varchar','precision' => '32','nullable' => False,'default' => 'common'), - 'message_id' => array('type' => 'varchar','precision' => '128','nullable' => False,'default' => ''), - 'content' => array('type' => 'text') - ), - 'pk' => array('lang','app_name','message_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('lang_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_lang' => array( + 'fd' => array( + 'lang' => array('type' => 'varchar','precision' => '5','nullable' => False,'default' => ''), + 'app_name' => array('type' => 'varchar','precision' => '32','nullable' => False,'default' => 'common'), + 'message_id' => array('type' => 'varchar','precision' => '128','nullable' => False,'default' => ''), + 'content' => array('type' => 'text') ), - 'egw_nextid' => array( - 'fd' => array( - 'id' => array('type' => 'int','precision' => '4','nullable' => True), - 'appname' => array('type' => 'varchar','precision' => '25','nullable' => False) - ), - 'pk' => array('appname'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('lang','app_name','message_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_nextid' => array( + 'fd' => array( + 'id' => array('type' => 'int','precision' => '4','nullable' => True), + 'appname' => array('type' => 'varchar','precision' => '25','nullable' => False) ), - 'egw_categories' => array( - 'fd' => array( - 'cat_id' => array('type' => 'auto','precision' => '4','nullable' => False), - 'cat_main' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), - 'cat_parent' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), - 'cat_level' => array('type' => 'int','precision' => '2','nullable' => False,'default' => '0'), - 'cat_owner' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), - 'cat_access' => array('type' => 'varchar','precision' => '7'), - 'cat_appname' => array('type' => 'varchar','precision' => '50','nullable' => False), - 'cat_name' => array('type' => 'varchar','precision' => '150','nullable' => False), - 'cat_description' => array('type' => 'varchar','precision' => '255','nullable' => False), - 'cat_data' => array('type' => 'text'), - 'last_mod' => array('type' => 'int','precision' => '8','nullable' => False) - ), - 'pk' => array('cat_id'), - 'fk' => array(), - 'ix' => array(array('cat_appname','cat_owner','cat_parent','cat_level')), - 'uc' => array() + 'pk' => array('appname'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_categories' => array( + 'fd' => array( + 'cat_id' => array('type' => 'auto','precision' => '4','nullable' => False), + 'cat_main' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), + 'cat_parent' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), + 'cat_level' => array('type' => 'int','precision' => '2','nullable' => False,'default' => '0'), + 'cat_owner' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), + 'cat_access' => array('type' => 'varchar','precision' => '7'), + 'cat_appname' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'cat_name' => array('type' => 'varchar','precision' => '150','nullable' => False), + 'cat_description' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'cat_data' => array('type' => 'text'), + 'last_mod' => array('type' => 'int','precision' => '8','nullable' => False) ), - 'egw_log' => array( - 'fd' => array( - 'log_id' => array('type' => 'auto','precision' => '4','nullable' => False), - 'log_date' => array('type' => 'timestamp','nullable' => False), - 'log_user' => array('type' => 'int','precision' => '4','nullable' => False), - 'log_app' => array('type' => 'varchar','precision' => '50','nullable' => False), - 'log_severity' => array('type' => 'char','precision' => '1','nullable' => False) - ), - 'pk' => array('log_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('cat_id'), + 'fk' => array(), + 'ix' => array(array('cat_appname','cat_owner','cat_parent','cat_level')), + 'uc' => array() + ), + 'egw_log' => array( + 'fd' => array( + 'log_id' => array('type' => 'auto','precision' => '4','nullable' => False), + 'log_date' => array('type' => 'timestamp','nullable' => False), + 'log_user' => array('type' => 'int','precision' => '4','nullable' => False), + 'log_app' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'log_severity' => array('type' => 'char','precision' => '1','nullable' => False) ), - 'egw_log_msg' => array( - 'fd' => array( - 'log_msg_log_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'log_msg_seq_no' => array('type' => 'int','precision' => '4','nullable' => False), - 'log_msg_date' => array('type' => 'timestamp','nullable' => False), - 'log_msg_tx_fid' => array('type' => 'varchar','precision' => '4','nullable' => True), - 'log_msg_tx_id' => array('type' => 'varchar','precision' => '4','nullable' => True), - 'log_msg_severity' => array('type' => 'char','precision' => '1','nullable' => False), - 'log_msg_code' => array('type' => 'varchar','precision' => '30','nullable' => False), - 'log_msg_msg' => array('type' => 'text','nullable' => False), - 'log_msg_parms' => array('type' => 'text','nullable' => False), - 'log_msg_file' => array('type' => 'varchar','precision' => '255','nullable' => False), - 'log_msg_line' => array('type' => 'int','precision' => '4','nullable' => False) - ), - 'pk' => array('log_msg_log_id','log_msg_seq_no'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('log_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_log_msg' => array( + 'fd' => array( + 'log_msg_log_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'log_msg_seq_no' => array('type' => 'int','precision' => '4','nullable' => False), + 'log_msg_date' => array('type' => 'timestamp','nullable' => False), + 'log_msg_tx_fid' => array('type' => 'varchar','precision' => '4','nullable' => True), + 'log_msg_tx_id' => array('type' => 'varchar','precision' => '4','nullable' => True), + 'log_msg_severity' => array('type' => 'char','precision' => '1','nullable' => False), + 'log_msg_code' => array('type' => 'varchar','precision' => '30','nullable' => False), + 'log_msg_msg' => array('type' => 'text','nullable' => False), + 'log_msg_parms' => array('type' => 'text','nullable' => False), + 'log_msg_file' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'log_msg_line' => array('type' => 'int','precision' => '4','nullable' => False) ), - 'egw_interserv' => array( - 'fd' => array( - 'server_id' => array('type' => 'auto','nullable' => False), - 'server_name' => array('type' => 'varchar','precision' => '64','nullable' => True), - 'server_host' => array('type' => 'varchar','precision' => '255','nullable' => True), - 'server_url' => array('type' => 'varchar','precision' => '255','nullable' => True), - 'trust_level' => array('type' => 'int','precision' => '4'), - 'trust_rel' => array('type' => 'int','precision' => '4'), - 'username' => array('type' => 'varchar','precision' => '64','nullable' => True), - 'password' => array('type' => 'varchar','precision' => '255','nullable' => True), - 'admin_name' => array('type' => 'varchar','precision' => '255','nullable' => True), - 'admin_email' => array('type' => 'varchar','precision' => '255','nullable' => True), - 'server_mode' => array('type' => 'varchar','precision' => '16','nullable' => False,'default' => 'xmlrpc'), - 'server_security' => array('type' => 'varchar','precision' => '16','nullable' => True) - ), - 'pk' => array('server_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('log_msg_log_id','log_msg_seq_no'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_interserv' => array( + 'fd' => array( + 'server_id' => array('type' => 'auto','nullable' => False), + 'server_name' => array('type' => 'varchar','precision' => '64','nullable' => True), + 'server_host' => array('type' => 'varchar','precision' => '255','nullable' => True), + 'server_url' => array('type' => 'varchar','precision' => '255','nullable' => True), + 'trust_level' => array('type' => 'int','precision' => '4'), + 'trust_rel' => array('type' => 'int','precision' => '4'), + 'username' => array('type' => 'varchar','precision' => '64','nullable' => True), + 'password' => array('type' => 'varchar','precision' => '255','nullable' => True), + 'admin_name' => array('type' => 'varchar','precision' => '255','nullable' => True), + 'admin_email' => array('type' => 'varchar','precision' => '255','nullable' => True), + 'server_mode' => array('type' => 'varchar','precision' => '16','nullable' => False,'default' => 'xmlrpc'), + 'server_security' => array('type' => 'varchar','precision' => '16','nullable' => True) ), - 'egw_vfs' => array( - 'fd' => array( - 'vfs_file_id' => array('type' => 'auto','nullable' => False), - 'vfs_owner_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'vfs_createdby_id' => array('type' => 'int','precision' => '4'), - 'vfs_modifiedby_id' => array('type' => 'int','precision' => '4'), - 'vfs_created' => array('type' => 'timestamp','nullable' => False,'default' => 'current_timestamp'), - 'vfs_modified' => array('type' => 'timestamp'), - 'vfs_size' => array('type' => 'int','precision' => '4'), - 'vfs_mime_type' => array('type' => 'varchar','precision' => '64'), - 'vfs_deleteable' => array('type' => 'char','precision' => '1','default' => 'Y'), - 'vfs_comment' => array('type' => 'varchar','precision' => '255'), - 'vfs_app' => array('type' => 'varchar','precision' => '25'), - 'vfs_directory' => array('type' => 'varchar','precision' => '233'), - 'vfs_name' => array('type' => 'varchar','precision' => '100','nullable' => False), - 'vfs_link_directory' => array('type' => 'varchar','precision' => '255'), - 'vfs_link_name' => array('type' => 'varchar','precision' => '128'), - 'vfs_version' => array('type' => 'varchar','precision' => '30','nullable' => False,'default' => '0.0.0.0'), - 'vfs_content' => array('type' => 'blob') - ), - 'pk' => array('vfs_file_id'), - 'fk' => array(), - 'ix' => array(array('vfs_directory','vfs_name')), - 'uc' => array() + 'pk' => array('server_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_vfs' => array( + 'fd' => array( + 'vfs_file_id' => array('type' => 'auto','nullable' => False), + 'vfs_owner_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'vfs_createdby_id' => array('type' => 'int','precision' => '4'), + 'vfs_modifiedby_id' => array('type' => 'int','precision' => '4'), + 'vfs_created' => array('type' => 'timestamp','nullable' => False,'default' => 'current_timestamp'), + 'vfs_modified' => array('type' => 'timestamp'), + 'vfs_size' => array('type' => 'int','precision' => '4'), + 'vfs_mime_type' => array('type' => 'varchar','precision' => '64'), + 'vfs_deleteable' => array('type' => 'char','precision' => '1','default' => 'Y'), + 'vfs_comment' => array('type' => 'varchar','precision' => '255'), + 'vfs_app' => array('type' => 'varchar','precision' => '25'), + 'vfs_directory' => array('type' => 'varchar','precision' => '233'), + 'vfs_name' => array('type' => 'varchar','precision' => '100','nullable' => False), + 'vfs_link_directory' => array('type' => 'varchar','precision' => '255'), + 'vfs_link_name' => array('type' => 'varchar','precision' => '128'), + 'vfs_version' => array('type' => 'varchar','precision' => '30','nullable' => False,'default' => '0.0.0.0'), + 'vfs_content' => array('type' => 'blob') ), - 'egw_history_log' => array( - 'fd' => array( - 'history_id' => array('type' => 'auto','precision' => '4','nullable' => False), - 'history_record_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'history_appname' => array('type' => 'varchar','precision' => '64','nullable' => False), - 'history_owner' => array('type' => 'int','precision' => '4','nullable' => False), - 'history_status' => array('type' => 'char','precision' => '2','nullable' => False), - 'history_new_value' => array('type' => 'text','nullable' => False), - 'history_timestamp' => array('type' => 'timestamp','nullable' => False,'default' => 'current_timestamp'), - 'history_old_value' => array('type' => 'text','nullable' => False) - ), - 'pk' => array('history_id'), - 'fk' => array(), - 'ix' => array(array('history_appname','history_record_id','history_status','history_timestamp')), - 'uc' => array() + 'pk' => array('vfs_file_id'), + 'fk' => array(), + 'ix' => array(array('vfs_directory','vfs_name')), + 'uc' => array() + ), + 'egw_history_log' => array( + 'fd' => array( + 'history_id' => array('type' => 'auto','precision' => '4','nullable' => False), + 'history_record_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'history_appname' => array('type' => 'varchar','precision' => '64','nullable' => False), + 'history_owner' => array('type' => 'int','precision' => '4','nullable' => False), + 'history_status' => array('type' => 'char','precision' => '2','nullable' => False), + 'history_new_value' => array('type' => 'text','nullable' => False), + 'history_timestamp' => array('type' => 'timestamp','nullable' => False,'default' => 'current_timestamp'), + 'history_old_value' => array('type' => 'text','nullable' => False) ), - 'egw_async' => array( - 'fd' => array( - 'async_id' => array('type' => 'varchar','precision' => '255','nullable' => False), - 'async_next' => array('type' => 'int','precision' => '4','nullable' => False), - 'async_times' => array('type' => 'varchar','precision' => '255','nullable' => False), - 'async_method' => array('type' => 'varchar','precision' => '80','nullable' => False), - 'async_data' => array('type' => 'text','nullable' => False), - 'async_account_id' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0') - ), - 'pk' => array('async_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('history_id'), + 'fk' => array(), + 'ix' => array(array('history_appname','history_record_id','history_status','history_timestamp')), + 'uc' => array() + ), + 'egw_async' => array( + 'fd' => array( + 'async_id' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'async_next' => array('type' => 'int','precision' => '4','nullable' => False), + 'async_times' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'async_method' => array('type' => 'varchar','precision' => '80','nullable' => False), + 'async_data' => array('type' => 'text','nullable' => False), + 'async_account_id' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0') ), - 'egw_api_content_history' => array( - 'fd' => array( - 'sync_appname' => array('type' => 'varchar','precision' => '60','nullable' => False), - 'sync_contentid' => array('type' => 'varchar','precision' => '60','nullable' => False), - 'sync_added' => array('type' => 'timestamp'), - 'sync_modified' => array('type' => 'timestamp'), - 'sync_deleted' => array('type' => 'timestamp'), - 'sync_id' => array('type' => 'auto','nullable' => False), - 'sync_guid' => array('type' => 'varchar','precision' => '120','nullable' => False), - 'sync_changedby' => array('type' => 'int','precision' => '4','nullable' => False) - ), - 'pk' => array('sync_id'), - 'fk' => array(), - 'ix' => array('sync_added','sync_modified','sync_deleted','sync_guid','sync_changedby',array('sync_appname','sync_contentid')), - 'uc' => array() + 'pk' => array('async_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_api_content_history' => array( + 'fd' => array( + 'sync_appname' => array('type' => 'varchar','precision' => '60','nullable' => False), + 'sync_contentid' => array('type' => 'varchar','precision' => '60','nullable' => False), + 'sync_added' => array('type' => 'timestamp'), + 'sync_modified' => array('type' => 'timestamp'), + 'sync_deleted' => array('type' => 'timestamp'), + 'sync_id' => array('type' => 'auto','nullable' => False), + 'sync_guid' => array('type' => 'varchar','precision' => '120','nullable' => False), + 'sync_changedby' => array('type' => 'int','precision' => '4','nullable' => False) ), - 'phpgw_vfs2_mimetypes' => array( - 'fd' => array( - 'mime_id' => array('type' => 'auto','nullable' => False), - 'extension' => array('type' => 'varchar','precision' => '10','nullable' => False), - 'mime' => array('type' => 'varchar','precision' => '50','nullable' => False), - 'mime_magic' => array('type' => 'varchar','precision' => '255','nullable' => True), - 'friendly' => array('type' => 'varchar','precision' => '50','nullable' => False), - 'image' => array('type' => 'blob'), - 'proper_id' => array('type' => 'varchar','precision' => '4') - ), - 'pk' => array('mime_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('sync_id'), + 'fk' => array(), + 'ix' => array('sync_added','sync_modified','sync_deleted','sync_guid','sync_changedby',array('sync_appname','sync_contentid')), + 'uc' => array() + ), + 'egw_links' => array( + 'fd' => array( + 'link_id' => array('type' => 'auto','nullable' => False), + 'link_app1' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'link_id1' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'link_app2' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'link_id2' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'link_remark' => array('type' => 'varchar','precision' => '100'), + 'link_lastmod' => array('type' => 'int','precision' => '8','nullable' => False), + 'link_owner' => array('type' => 'int','precision' => '4','nullable' => False) ), - 'phpgw_vfs2_files' => array( - 'fd' => array( - 'file_id' => array('type' => 'auto','nullable' => False), - 'mime_id' => array('type' => 'int','precision' => '4'), - 'owner_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'createdby_id' => array('type' => 'int','precision' => '4'), - 'modifiedby_id' => array('type' => 'int','precision' => '4'), - 'created' => array('type' => 'timestamp','nullable' => False,'default' => '1970-01-01 00:00:00'), - 'modified' => array('type' => 'timestamp'), - 'size' => array('type' => 'int','precision' => '8'), - 'deleteable' => array('type' => 'char','precision' => '1','default' => 'Y'), - 'comment' => array('type' => 'varchar','precision' => '255'), - 'app' => array('type' => 'varchar','precision' => '25'), - 'directory' => array('type' => 'varchar','precision' => '255'), - 'name' => array('type' => 'varchar','precision' => '64','nullable' => False), - 'link_directory' => array('type' => 'varchar','precision' => '255'), - 'link_name' => array('type' => 'varchar','precision' => '128'), - 'version' => array('type' => 'varchar','precision' => '30','nullable' => False,'default' => '0.0.0.0'), - 'content' => array('type' => 'longtext'), - 'is_backup' => array('type' => 'varchar','precision' => '1','nullable' => False,'default' => 'N'), - 'shared' => array('type' => 'varchar','precision' => '1','nullable' => False,'default' => 'N'), - 'proper_id' => array('type' => 'varchar','precision' => '45') - ), - 'pk' => array('file_id'), - 'fk' => array(), - 'ix' => array(array('directory','name')), - 'uc' => array() + 'pk' => array('link_id'), + 'fk' => array(), + 'ix' => array(array('link_app1','link_id1','link_lastmod'),array('link_app2','link_id2','link_lastmod')), + 'uc' => array() + ), + 'egw_addressbook' => array( + 'fd' => array( + 'contact_id' => array('type' => 'auto','nullable' => False), + 'contact_tid' => array('type' => 'char','precision' => '1','default' => 'n'), + 'contact_owner' => array('type' => 'int','precision' => '8','nullable' => False), + 'contact_private' => array('type' => 'int','precision' => '1','default' => '0'), + 'cat_id' => array('type' => 'varchar','precision' => '255'), + 'n_family' => array('type' => 'varchar','precision' => '64'), + 'n_given' => array('type' => 'varchar','precision' => '64'), + 'n_middle' => array('type' => 'varchar','precision' => '64'), + 'n_prefix' => array('type' => 'varchar','precision' => '64'), + 'n_suffix' => array('type' => 'varchar','precision' => '64'), + 'n_fn' => array('type' => 'varchar','precision' => '128'), + 'n_fileas' => array('type' => 'varchar','precision' => '255'), + 'contact_bday' => array('type' => 'varchar','precision' => '12'), + 'org_name' => array('type' => 'varchar','precision' => '128'), + 'org_unit' => array('type' => 'varchar','precision' => '64'), + 'contact_title' => array('type' => 'varchar','precision' => '64'), + 'contact_role' => array('type' => 'varchar','precision' => '64'), + 'contact_assistent' => array('type' => 'varchar','precision' => '64'), + 'contact_room' => array('type' => 'varchar','precision' => '64'), + 'adr_one_street' => array('type' => 'varchar','precision' => '64'), + 'adr_one_street2' => array('type' => 'varchar','precision' => '64'), + 'adr_one_locality' => array('type' => 'varchar','precision' => '64'), + 'adr_one_region' => array('type' => 'varchar','precision' => '64'), + 'adr_one_postalcode' => array('type' => 'varchar','precision' => '64'), + 'adr_one_countryname' => array('type' => 'varchar','precision' => '64'), + 'contact_label' => array('type' => 'text'), + 'adr_two_street' => array('type' => 'varchar','precision' => '64'), + 'adr_two_street2' => array('type' => 'varchar','precision' => '64'), + 'adr_two_locality' => array('type' => 'varchar','precision' => '64'), + 'adr_two_region' => array('type' => 'varchar','precision' => '64'), + 'adr_two_postalcode' => array('type' => 'varchar','precision' => '64'), + 'adr_two_countryname' => array('type' => 'varchar','precision' => '64'), + 'tel_work' => array('type' => 'varchar','precision' => '40'), + 'tel_cell' => array('type' => 'varchar','precision' => '40'), + 'tel_fax' => array('type' => 'varchar','precision' => '40'), + 'tel_assistent' => array('type' => 'varchar','precision' => '40'), + 'tel_car' => array('type' => 'varchar','precision' => '40'), + 'tel_pager' => array('type' => 'varchar','precision' => '40'), + 'tel_home' => array('type' => 'varchar','precision' => '40'), + 'tel_fax_home' => array('type' => 'varchar','precision' => '40'), + 'tel_cell_private' => array('type' => 'varchar','precision' => '40'), + 'tel_other' => array('type' => 'varchar','precision' => '40'), + 'tel_prefer' => array('type' => 'varchar','precision' => '32'), + 'contact_email' => array('type' => 'varchar','precision' => '128'), + 'contact_email_home' => array('type' => 'varchar','precision' => '128'), + 'contact_url' => array('type' => 'varchar','precision' => '128'), + 'contact_url_home' => array('type' => 'varchar','precision' => '128'), + 'contact_freebusy_uri' => array('type' => 'varchar','precision' => '128'), + 'contact_calendar_uri' => array('type' => 'varchar','precision' => '128'), + 'contact_note' => array('type' => 'text'), + 'contact_tz' => array('type' => 'varchar','precision' => '8'), + 'contact_geo' => array('type' => 'varchar','precision' => '32'), + 'contact_pubkey' => array('type' => 'text'), + 'contact_created' => array('type' => 'int','precision' => '8'), + 'contact_creator' => array('type' => 'int','precision' => '4','nullable' => False), + 'contact_modified' => array('type' => 'int','precision' => '8','nullable' => False), + 'contact_modifier' => array('type' => 'int','precision' => '4'), + 'contact_jpegphoto' => array('type' => 'blob'), + 'account_id' => array('type' => 'int','precision' => '4') ), - 'phpgw_vfs2_customfields' => array( - 'fd' => array( - 'customfield_id' => array('type' => 'auto','nullable' => False), - 'customfield_name' => array('type' => 'varchar','precision' => '60','nullable' => False), - 'customfield_description' => array('type' => 'varchar','precision' => '255','nullable' => True), - 'customfield_type' => array('type' => 'varchar','precision' => '20','nullable' => False), - 'customfield_precision' => array('type' => 'int','precision' => '4','nullable' => True), - 'customfield_active' => array('type' => 'varchar','precision' => '1','nullable' => False,'default' => 'N') - ), - 'pk' => array('customfield_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('contact_id'), + 'fk' => array(), + 'ix' => array('contact_owner','cat_id','n_fileas',array('n_family','n_given'),array('n_given','n_family'),array('org_name','n_family','n_given')), + 'uc' => array('account_id') + ), + 'egw_addressbook_extra' => array( + 'fd' => array( + 'contact_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'contact_owner' => array('type' => 'int','precision' => '8'), + 'contact_name' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'contact_value' => array('type' => 'text') ), - 'phpgw_vfs2_quota' => array( - 'fd' => array( - 'account_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'quota' => array('type' => 'int','precision' => '4','nullable' => False) - ), - 'pk' => array('account_id'), - 'fk' => array('account_id' => array('egw_accounts' => 'account_id')), - 'ix' => array(), - 'uc' => array() + 'pk' => array('contact_id','contact_name'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_addressbook_lists' => array( + 'fd' => array( + 'list_id' => array('type' => 'auto','nullable' => False), + 'list_name' => array('type' => 'varchar','precision' => '80','nullable' => False), + 'list_owner' => array('type' => 'int','precision' => '4','nullable' => False), + 'list_created' => array('type' => 'int','precision' => '8'), + 'list_creator' => array('type' => 'int','precision' => '4') ), - 'phpgw_vfs2_shares' => array( - 'fd' => array( - 'account_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'file_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'acl_rights' => array('type' => 'int','precision' => '4','nullable' => False) - ), - 'pk' => array('account_id','file_id'), - 'fk' => array('account_id' => array('egw_accounts' => 'account_id'),'file_id' => array('phpgw_vfs2_files' => 'file_id')), - 'ix' => array(), - 'uc' => array() + 'pk' => array('list_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array(array('list_owner','list_name')) + ), + 'egw_addressbook2list' => array( + 'fd' => array( + 'contact_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'list_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'list_added' => array('type' => 'int','precision' => '8'), + 'list_added_by' => array('type' => 'int','precision' => '4') ), - 'phpgw_vfs2_versioning' => array( - 'fd' => array( - 'version_id' => array('type' => 'auto','nullable' => False), - 'file_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'operation' => array('type' => 'int','precision' => '4','nullable' => False), - 'modifiedby_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'modified' => array('type' => 'timestamp','nullable' => False), - 'version' => array('type' => 'varchar','precision' => '30','nullable' => False), - 'comment' => array('type' => 'varchar','precision' => '255','nullable' => True), - 'backup_file_id' => array('type' => 'int','precision' => '4','nullable' => True), - 'backup_content' => array('type' => 'longtext','nullable' => True), - 'src' => array('type' => 'varchar','precision' => '255','nullable' => True), - 'dest' => array('type' => 'varchar','precision' => '255','nullable' => True) - ), - 'pk' => array('version_id'), - 'fk' => array('file_id' => array('phpgw_vfs2_files' => 'file_id')), - 'ix' => array(), - 'uc' => array() + 'pk' => array('contact_id','list_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ), + 'egw_sqlfs' => array( + 'fd' => array( + 'fs_id' => array('type' => 'auto','nullable' => False), + 'fs_dir' => array('type' => 'int','precision' => '4','nullable' => False), + 'fs_name' => array('type' => 'varchar','precision' => '200','nullable' => False), + 'fs_mode' => array('type' => 'int','precision' => '2','nullable' => False), + 'fs_uid' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), + 'fs_gid' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), + 'fs_created' => array('type' => 'timestamp','precision' => '8','nullable' => False,'default' => 'current_timestamp'), + 'fs_modified' => array('type' => 'timestamp','precision' => '8','nullable' => False), + 'fs_mime' => array('type' => 'varchar','precision' => '64','nullable' => False), + 'fs_size' => array('type' => 'int','precision' => '8','nullable' => False), + 'fs_creator' => array('type' => 'int','precision' => '4','nullable' => False), + 'fs_modifier' => array('type' => 'int','precision' => '4'), + 'fs_active' => array('type' => 'bool','nullable' => False,'default' => 't'), + 'fs_comment' => array('type' => 'varchar','precision' => '255'), + 'fs_content' => array('type' => 'blob') ), - 'phpgw_vfs2_customfields_data' => array( - 'fd' => array( - 'file_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'customfield_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'data' => array('type' => 'longtext','nullable' => True) - ), - 'pk' => array('file_id','customfield_id'), - 'fk' => array('file_id' => array('phpgw_vfs2_files' => 'file_id'),'customfield_id' => array('phpgw_vfs2_customfields' => 'customfield_id')), - 'ix' => array(), - 'uc' => array() + 'pk' => array('fs_id'), + 'fk' => array(), + 'ix' => array(array('fs_dir','fs_active','fs_name')), + 'uc' => array() + ), + 'egw_index_keywords' => array( + 'fd' => array( + 'si_id' => array('type' => 'auto','nullable' => False), + 'si_keyword' => array('type' => 'varchar','precision' => '64','nullable' => False), + 'si_ignore' => array('type' => 'bool') ), - 'phpgw_vfs2_prefixes' => array( - 'fd' => array( - 'prefix_id' => array('type' => 'auto','nullable' => False), - 'prefix' => array('type' => 'varchar','precision' => '8','nullable' => False), - 'owner_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'prefix_description' => array('type' => 'varchar','precision' => '30','nullable' => True), - 'prefix_type' => array('type' => 'varchar','precision' => '1','nullable' => False,'default' => 'p') - ), - 'pk' => array('prefix_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() + 'pk' => array('si_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array('si_keyword') + ), + 'egw_index' => array( + 'fd' => array( + 'si_app' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'si_app_id' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'si_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'si_owner' => array('type' => 'int','precision' => '4','nullable' => False) ), - 'egw_links' => array( - 'fd' => array( - 'link_id' => array('type' => 'auto','nullable' => False), - 'link_app1' => array('type' => 'varchar','precision' => '25','nullable' => False), - 'link_id1' => array('type' => 'varchar','precision' => '50','nullable' => False), - 'link_app2' => array('type' => 'varchar','precision' => '25','nullable' => False), - 'link_id2' => array('type' => 'varchar','precision' => '50','nullable' => False), - 'link_remark' => array('type' => 'varchar','precision' => '100'), - 'link_lastmod' => array('type' => 'int','precision' => '8','nullable' => False), - 'link_owner' => array('type' => 'int','precision' => '4','nullable' => False) - ), - 'pk' => array('link_id'), - 'fk' => array(), - 'ix' => array(array('link_app1','link_id1','link_lastmod'),array('link_app2','link_id2','link_lastmod')), - 'uc' => array() + 'pk' => array('si_app','si_app_id','si_id'), + 'fk' => array(), + 'ix' => array('si_id'), + 'uc' => array() + ), + 'egw_cat2entry' => array( + 'fd' => array( + 'ce_app' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'ce_app_id' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'cat_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'ce_owner' => array('type' => 'int','precision' => '4','nullable' => False) ), - 'egw_addressbook' => array( - 'fd' => array( - 'contact_id' => array('type' => 'auto','nullable' => False), - 'contact_tid' => array('type' => 'char','precision' => '1','default' => 'n'), - 'contact_owner' => array('type' => 'int','precision' => '8','nullable' => False), - 'contact_private' => array('type' => 'int','precision' => '1','default' => '0'), - 'cat_id' => array('type' => 'varchar','precision' => '255'), - 'n_family' => array('type' => 'varchar','precision' => '64'), - 'n_given' => array('type' => 'varchar','precision' => '64'), - 'n_middle' => array('type' => 'varchar','precision' => '64'), - 'n_prefix' => array('type' => 'varchar','precision' => '64'), - 'n_suffix' => array('type' => 'varchar','precision' => '64'), - 'n_fn' => array('type' => 'varchar','precision' => '128'), - 'n_fileas' => array('type' => 'varchar','precision' => '255'), - 'contact_bday' => array('type' => 'varchar','precision' => '12'), - 'org_name' => array('type' => 'varchar','precision' => '128'), - 'org_unit' => array('type' => 'varchar','precision' => '64'), - 'contact_title' => array('type' => 'varchar','precision' => '64'), - 'contact_role' => array('type' => 'varchar','precision' => '64'), - 'contact_assistent' => array('type' => 'varchar','precision' => '64'), - 'contact_room' => array('type' => 'varchar','precision' => '64'), - 'adr_one_street' => array('type' => 'varchar','precision' => '64'), - 'adr_one_street2' => array('type' => 'varchar','precision' => '64'), - 'adr_one_locality' => array('type' => 'varchar','precision' => '64'), - 'adr_one_region' => array('type' => 'varchar','precision' => '64'), - 'adr_one_postalcode' => array('type' => 'varchar','precision' => '64'), - 'adr_one_countryname' => array('type' => 'varchar','precision' => '64'), - 'contact_label' => array('type' => 'text'), - 'adr_two_street' => array('type' => 'varchar','precision' => '64'), - 'adr_two_street2' => array('type' => 'varchar','precision' => '64'), - 'adr_two_locality' => array('type' => 'varchar','precision' => '64'), - 'adr_two_region' => array('type' => 'varchar','precision' => '64'), - 'adr_two_postalcode' => array('type' => 'varchar','precision' => '64'), - 'adr_two_countryname' => array('type' => 'varchar','precision' => '64'), - 'tel_work' => array('type' => 'varchar','precision' => '40'), - 'tel_cell' => array('type' => 'varchar','precision' => '40'), - 'tel_fax' => array('type' => 'varchar','precision' => '40'), - 'tel_assistent' => array('type' => 'varchar','precision' => '40'), - 'tel_car' => array('type' => 'varchar','precision' => '40'), - 'tel_pager' => array('type' => 'varchar','precision' => '40'), - 'tel_home' => array('type' => 'varchar','precision' => '40'), - 'tel_fax_home' => array('type' => 'varchar','precision' => '40'), - 'tel_cell_private' => array('type' => 'varchar','precision' => '40'), - 'tel_other' => array('type' => 'varchar','precision' => '40'), - 'tel_prefer' => array('type' => 'varchar','precision' => '32'), - 'contact_email' => array('type' => 'varchar','precision' => '128'), - 'contact_email_home' => array('type' => 'varchar','precision' => '128'), - 'contact_url' => array('type' => 'varchar','precision' => '128'), - 'contact_url_home' => array('type' => 'varchar','precision' => '128'), - 'contact_freebusy_uri' => array('type' => 'varchar','precision' => '128'), - 'contact_calendar_uri' => array('type' => 'varchar','precision' => '128'), - 'contact_note' => array('type' => 'text'), - 'contact_tz' => array('type' => 'varchar','precision' => '8'), - 'contact_geo' => array('type' => 'varchar','precision' => '32'), - 'contact_pubkey' => array('type' => 'text'), - 'contact_created' => array('type' => 'int','precision' => '8'), - 'contact_creator' => array('type' => 'int','precision' => '4','nullable' => False), - 'contact_modified' => array('type' => 'int','precision' => '8','nullable' => False), - 'contact_modifier' => array('type' => 'int','precision' => '4'), - 'contact_jpegphoto' => array('type' => 'blob'), - 'account_id' => array('type' => 'int','precision' => '4') - ), - 'pk' => array('contact_id'), - 'fk' => array(), - 'ix' => array('contact_owner','cat_id','n_fileas',array('n_family','n_given'),array('n_given','n_family'),array('org_name','n_family','n_given')), - 'uc' => array('account_id') - ), - 'egw_addressbook_extra' => array( - 'fd' => array( - 'contact_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'contact_owner' => array('type' => 'int','precision' => '8'), - 'contact_name' => array('type' => 'varchar','precision' => '255','nullable' => False), - 'contact_value' => array('type' => 'text') - ), - 'pk' => array('contact_id','contact_name'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() - ), - 'egw_addressbook_lists' => array( - 'fd' => array( - 'list_id' => array('type' => 'auto','nullable' => False), - 'list_name' => array('type' => 'varchar','precision' => '80','nullable' => False), - 'list_owner' => array('type' => 'int','precision' => '4','nullable' => False), - 'list_created' => array('type' => 'int','precision' => '8'), - 'list_creator' => array('type' => 'int','precision' => '4') - ), - 'pk' => array('list_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array(array('list_owner','list_name')) - ), - 'egw_addressbook2list' => array( - 'fd' => array( - 'contact_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'list_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'list_added' => array('type' => 'int','precision' => '8'), - 'list_added_by' => array('type' => 'int','precision' => '4') - ), - 'pk' => array('contact_id','list_id'), - 'fk' => array(), - 'ix' => array(), - 'uc' => array() - ), - 'egw_sqlfs' => array( - 'fd' => array( - 'fs_id' => array('type' => 'auto','nullable' => False), - 'fs_dir' => array('type' => 'int','precision' => '4','nullable' => False), - 'fs_name' => array('type' => 'varchar','precision' => '200','nullable' => False), - 'fs_mode' => array('type' => 'int','precision' => '2','nullable' => False), - 'fs_uid' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), - 'fs_gid' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), - 'fs_created' => array('type' => 'timestamp','precision' => '8','nullable' => False,'default' => 'current_timestamp'), - 'fs_modified' => array('type' => 'timestamp','precision' => '8','nullable' => False), - 'fs_mime' => array('type' => 'varchar','precision' => '64','nullable' => False), - 'fs_size' => array('type' => 'int','precision' => '8','nullable' => False), - 'fs_creator' => array('type' => 'int','precision' => '4','nullable' => False), - 'fs_modifier' => array('type' => 'int','precision' => '4'), - 'fs_active' => array('type' => 'bool','nullable' => False,'default' => 't'), - 'fs_comment' => array('type' => 'varchar','precision' => '255'), - 'fs_content' => array('type' => 'blob') - ), - 'pk' => array('fs_id'), - 'fk' => array(), - 'ix' => array(array('fs_dir','fs_active','fs_name')), - 'uc' => array() - ) - ); + 'pk' => array('ce_app','ce_app_id','cat_id'), + 'fk' => array(), + 'ix' => array('cat_id'), + 'uc' => array() + ), +); diff --git a/phpgwapi/setup/tables_update.inc.php b/phpgwapi/setup/tables_update.inc.php index b0d2fa8c6a..c8093d221b 100644 --- a/phpgwapi/setup/tables_update.inc.php +++ b/phpgwapi/setup/tables_update.inc.php @@ -1,274 +1,366 @@ 1.6 + * + * @link http://www.egroupware.org + * @package api + * @subpackage setup + * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License + * @version $Id$ + */ - // $Id$ +/* Include older eGroupWare update support */ +include('tables_update_0_9_9.inc.php'); +include('tables_update_0_9_10.inc.php'); +include('tables_update_0_9_12.inc.php'); +include('tables_update_0_9_14.inc.php'); +include('tables_update_1_0.inc.php'); +include('tables_update_1_2.inc.php'); - /* Include older eGroupWare update support */ - include('tables_update_0_9_9.inc.php'); - include('tables_update_0_9_10.inc.php'); - include('tables_update_0_9_12.inc.php'); - include('tables_update_0_9_14.inc.php'); - include('tables_update_1_0.inc.php'); - include('tables_update_1_2.inc.php'); +// updates from the stable 1.4 branch +$test[] = '1.4.001'; +function phpgwapi_upgrade1_4_001() +{ + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.001'; +} - // updates from the stable 1.4 branch - $test[] = '1.4.001'; - function phpgwapi_upgrade1_4_001() +$test[] = '1.4.002'; +function phpgwapi_upgrade1_4_002() +{ + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.001'; +} + +$test[] = '1.4.003'; +function phpgwapi_upgrade1_4_003() +{ + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.001'; +} + +$test[] = '1.4.004'; +function phpgwapi_upgrade1_4_004() +{ + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.001'; +} + +$test[] = '1.5.001'; +function phpgwapi_upgrade1_5_001() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','org_name',array( + 'type' => 'varchar', + 'precision' => '128', + 'nullable' => true + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_email',array( + 'type' => 'varchar', + 'precision' => '128', + 'nullable' => true + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_email_home',array( + 'type' => 'varchar', + 'precision' => '128', + 'nullable' => true + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.002'; +} + +$test[] = '1.5.002'; +function phpgwapi_upgrade1_5_002() +{ + $GLOBALS['egw_setup']->oProc->CreateTable('egw_sqlfs',array( + 'fd' => array( + 'fs_id' => array('type' => 'auto','nullable' => False), + 'fs_dir' => array('type' => 'int','precision' => '4','nullable' => False), + 'fs_name' => array('type' => 'varchar','precision' => '200','nullable' => False), + 'fs_mode' => array('type' => 'int','precision' => '2','nullable' => False), + 'fs_uid' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), + 'fs_gid' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), + 'fs_created' => array('type' => 'timestamp','precision' => '8','nullable' => False,'default' => 'current_timestamp'), + 'fs_modified' => array('type' => 'timestamp','precision' => '8','nullable' => False), + 'fs_mime' => array('type' => 'varchar','precision' => '64','nullable' => False), + 'fs_size' => array('type' => 'int','precision' => '8','nullable' => False), + 'fs_creator' => array('type' => 'int','precision' => '4','nullable' => False), + 'fs_modifier' => array('type' => 'int','precision' => '4'), + 'fs_active' => array('type' => 'bool','nullable' => False,'default' => 't'), + 'fs_comment' => array('type' => 'varchar','precision' => '255'), + 'fs_content' => array('type' => 'blob') + ), + 'pk' => array('fs_id'), + 'fk' => array(), + 'ix' => array(array('fs_dir','fs_active','fs_name')), + 'uc' => array() + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.003'; +} + +$test[] = '1.5.003'; +function phpgwapi_upgrade1_5_003() +{ + // import the current egw_vfs into egw_sqlfs + // ToDo: moving /infolog and /infolog/$app to /apps in the files dir!!! + $debug = $GLOBALS['DEBUG']; + + // delete the table in case this update runs multiple times + $GLOBALS['egw_setup']->db->query('DELETE FROM egw_sqlfs',__LINE__,__FILE__); + if ($GLOBALS['egw_setup']->db->Type == 'mysql') { - return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.001'; + $GLOBALS['egw_setup']->db->query('ALTER TABLE egw_sqlfs AUTO_INCREMENT=1',__LINE__,__FILE__); } - - $test[] = '1.4.002'; - function phpgwapi_upgrade1_4_002() + // make sure the required dirs are there and have the following id's + $dirs = array( + '/' => 1, + '/home' => 2, + '/apps' => 3, + ); + foreach($dirs as $path => $id) { - return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.001'; - } - - $test[] = '1.4.003'; - function phpgwapi_upgrade1_4_003() - { - return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.001'; - } - - $test[] = '1.4.004'; - function phpgwapi_upgrade1_4_004() - { - return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.001'; - } - - $test[] = '1.5.001'; - function phpgwapi_upgrade1_5_001() - { - $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','org_name',array( - 'type' => 'varchar', - 'precision' => '128', - 'nullable' => true - )); - $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_email',array( - 'type' => 'varchar', - 'precision' => '128', - 'nullable' => true - )); - $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_email_home',array( - 'type' => 'varchar', - 'precision' => '128', - 'nullable' => true - )); - - return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.002'; - } - - $test[] = '1.5.002'; - function phpgwapi_upgrade1_5_002() - { - $GLOBALS['egw_setup']->oProc->CreateTable('egw_sqlfs',array( - 'fd' => array( - 'fs_id' => array('type' => 'auto','nullable' => False), - 'fs_dir' => array('type' => 'int','precision' => '4','nullable' => False), - 'fs_name' => array('type' => 'varchar','precision' => '200','nullable' => False), - 'fs_mode' => array('type' => 'int','precision' => '2','nullable' => False), - 'fs_uid' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), - 'fs_gid' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), - 'fs_created' => array('type' => 'timestamp','precision' => '8','nullable' => False,'default' => 'current_timestamp'), - 'fs_modified' => array('type' => 'timestamp','precision' => '8','nullable' => False), - 'fs_mime' => array('type' => 'varchar','precision' => '64','nullable' => False), - 'fs_size' => array('type' => 'int','precision' => '8','nullable' => False), - 'fs_creator' => array('type' => 'int','precision' => '4','nullable' => False), - 'fs_modifier' => array('type' => 'int','precision' => '4'), - 'fs_active' => array('type' => 'bool','nullable' => False,'default' => 't'), - 'fs_comment' => array('type' => 'varchar','precision' => '255'), - 'fs_content' => array('type' => 'blob') - ), - 'pk' => array('fs_id'), - 'fk' => array(), - 'ix' => array(array('fs_dir','fs_active','fs_name')), - 'uc' => array() - )); - - return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.003'; - } - - $test[] = '1.5.003'; - function phpgwapi_upgrade1_5_003() - { - // import the current egw_vfs into egw_sqlfs - // ToDo: moving /infolog and /infolog/$app to /apps in the files dir!!! - $debug = $GLOBALS['DEBUG']; - - // delete the table in case this update runs multiple times - $GLOBALS['egw_setup']->db->query('DELETE FROM egw_sqlfs',__LINE__,__FILE__); - if ($GLOBALS['egw_setup']->db->Type == 'mysql') - { - $GLOBALS['egw_setup']->db->query('ALTER TABLE egw_sqlfs AUTO_INCREMENT=1',__LINE__,__FILE__); - } - // make sure the required dirs are there and have the following id's - $dirs = array( - '/' => 1, - '/home' => 2, - '/apps' => 3, + $nrow = array( + 'fs_id' => $id, + 'fs_dir' => $path == '/' ? 0 : $dirs['/'], + 'fs_name' => substr($path,1), + 'fs_mode' => 05, + 'fs_uid' => 0, + 'fs_gid' => 0, + 'fs_created' => time(), + 'fs_modified' => time(), + 'fs_mime' => 'httpd/unix-directory', + 'fs_size' => 0, + 'fs_creator' => 0, + 'fs_modifier' => 0, + 'fs_comment' => null, + 'fs_content' => null, ); - foreach($dirs as $path => $id) + $GLOBALS['egw_setup']->db->insert('egw_sqlfs',$nrow,false,__LINE__,__FILE__,'phpgwapi'); + } + $query = $GLOBALS['egw_setup']->db->select('egw_vfs','*',"vfs_mime_type != 'journal' AND vfs_mime_type != 'journal-deleted'",__LINE__,__FILE__,false,'ORDER BY length(vfs_directory) ASC','phpgwapi'); + if ($debug) echo "rows=
\n";
+
+	foreach($query as $row)
+	{
+		// rename the /infolog dir to /apps/infolog and /infolog/$app /apps/$app
+		if (substr($row['vfs_directory'],0,8) == '/infolog')
 		{
-			$nrow = array(
-				'fs_id' => $id,
-				'fs_dir'  => $path == '/' ? 0 : $dirs['/'],
-				'fs_name' => substr($path,1),
-				'fs_mode' => 05,
-				'fs_uid' => 0,
-				'fs_gid' => 0,
-				'fs_created' => time(),
-				'fs_modified' => time(),
-				'fs_mime' => 'httpd/unix-directory',
-				'fs_size' => 0,
-				'fs_creator' => 0,
-				'fs_modifier' => 0,
-				'fs_comment' => null,
-				'fs_content' => null,
-			);
-			$GLOBALS['egw_setup']->db->insert('egw_sqlfs',$nrow,false,__LINE__,__FILE__,'phpgwapi');
+			$parts = explode('/',$row['vfs_directory']);	// 0 = '', 1 = 'infolog', 2 = app or info_id
+			//$parts[1] = is_numeric($parts[2]) ? 'apps/infolog' : 'apps';
+			$parts[1] = $row['vfs_directory']=='/infolog' && is_numeric($row['vfs_name']) ||
+				$parts[1]=='infolog' && is_numeric($parts[2]) ? 'apps/infolog' : 'apps';
+			$row['vfs_directory'] = implode('/',$parts);
 		}
-		$query = $GLOBALS['egw_setup']->db->select('egw_vfs','*',"vfs_mime_type != 'journal' AND vfs_mime_type != 'journal-deleted'",__LINE__,__FILE__,false,'ORDER BY length(vfs_directory) ASC','phpgwapi');
-		if ($debug) echo "rows=
\n";
-
-		foreach($query as $row)
+		elseif ($row['vfs_directory'] == '/' && $row['vfs_name'] == 'infolog')
 		{
-			// rename the /infolog dir to /apps/infolog and /infolog/$app /apps/$app
-			if (substr($row['vfs_directory'],0,8) == '/infolog')
-			{
-				$parts = explode('/',$row['vfs_directory']);	// 0 = '', 1 = 'infolog', 2 = app or info_id
-				//$parts[1] = is_numeric($parts[2]) ? 'apps/infolog' : 'apps';
-				$parts[1] = $row['vfs_directory']=='/infolog' && is_numeric($row['vfs_name']) ||
-					$parts[1]=='infolog' && is_numeric($parts[2]) ? 'apps/infolog' : 'apps';
-				$row['vfs_directory'] = implode('/',$parts);
-			}
-			elseif ($row['vfs_directory'] == '/' && $row['vfs_name'] == 'infolog')
-			{
-				$row['vfs_directory'] = '/apps';
-			}
-			$nrow = array(
-				'fs_dir'  => $dirs[$row['vfs_directory']],
-				'fs_name' => $row['vfs_name'],
-				'fs_mode' => $row['vfs_owner_id'] > 0 ?
-					($row['vfs_mime_type'] == 'Directory' ? 0700 : 0600) :
-					($row['vfs_mime_type'] == 'Directory' ? 0070 : 0060),
-				'fs_uid' => $row['vfs_owner_id'] > 0 ? $row['vfs_owner_id'] : 0,
-				'fs_gid' => $row['vfs_owner_id'] < 0 ? -$row['vfs_owner_id'] : 0,
-				'fs_created' => $row['vfs_created'],
-				'fs_modified' => $row['vfs_modified'] ? $row['vfs_modified'] : $row['vfs_created'],
-				'fs_mime' => $row['vfs_mime_type'] == 'Directory' ? 'httpd/unix-directory' :
-					($row['vfs_mime_type'] ? $row['vfs_mime_type'] : 'application/octet-stream'),
-				'fs_size' => $row['vfs_size'],
-				'fs_creator' => $row['vfs_createdby_id'],
-				'fs_modifier' => $row['vfs_modifedby_id'],
-				'fs_comment' => $row['vfs_comment'] ? $row['vfs_comment'] : null,
-				'fs_content' => $row['vfs_content'],
-			);
-			if ($debug)
-			{
-				foreach($row as $key => $val)
-				{
-					if (is_numeric($key)) unset($row[$key]);
-				}
-				print_r($row);
-				print_r($nrow);
-			}
-			if ($row['vfs_mime_type'] == 'Directory')
-			{
-				$dir = ($row['vfs_directory'] == '/' ? '' : $row['vfs_directory']).'/'.$row['vfs_name'];
-
-				if (!isset($dirs[$dir]))	// ignoring doublicate dirs, my devel box has somehow many of them specially /home
-				{
-					$GLOBALS['egw_setup']->db->insert('egw_sqlfs',$nrow,false,__LINE__,__FILE__,'phpgwapi');
-					$dirs[$dir] = $GLOBALS['egw_setup']->db->get_last_insert_id('egw_sqlfs','fs_id');
-					if ($debug) echo "$dir = {$dirs[$dir]}\n";
-				}
-				elseif ($debug)
-				{
-					echo "ignoring doublicate directory '$dir'!\n";
-				}
-			}
-			else
-			{
-				$GLOBALS['egw_setup']->db->insert('egw_sqlfs',$nrow,false,__LINE__,__FILE__,'phpgwapi');
-			}
-
+			$row['vfs_directory'] = '/apps';
 		}
+		$nrow = array(
+			'fs_dir'  => $dirs[$row['vfs_directory']],
+			'fs_name' => $row['vfs_name'],
+			'fs_mode' => $row['vfs_owner_id'] > 0 ?
+				($row['vfs_mime_type'] == 'Directory' ? 0700 : 0600) :
+				($row['vfs_mime_type'] == 'Directory' ? 0070 : 0060),
+			'fs_uid' => $row['vfs_owner_id'] > 0 ? $row['vfs_owner_id'] : 0,
+			'fs_gid' => $row['vfs_owner_id'] < 0 ? -$row['vfs_owner_id'] : 0,
+			'fs_created' => $row['vfs_created'],
+			'fs_modified' => $row['vfs_modified'] ? $row['vfs_modified'] : $row['vfs_created'],
+			'fs_mime' => $row['vfs_mime_type'] == 'Directory' ? 'httpd/unix-directory' :
+				($row['vfs_mime_type'] ? $row['vfs_mime_type'] : 'application/octet-stream'),
+			'fs_size' => $row['vfs_size'],
+			'fs_creator' => $row['vfs_createdby_id'],
+			'fs_modifier' => $row['vfs_modifedby_id'],
+			'fs_comment' => $row['vfs_comment'] ? $row['vfs_comment'] : null,
+			'fs_content' => $row['vfs_content'],
+		);
 		if ($debug)
 		{
-			echo "dirs=";
-			print_r($dirs);
-			echo "
\n"; - } - return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.004'; - } - - $test[] = '1.5.004'; - function phpgwapi_upgrade1_5_004() - { - // convert the filemanager group grants into extended ACL - - // delete all sqlfs entries from the ACL table, in case we run multiple times - $GLOBALS['egw_setup']->db->delete('egw_acl',array('acl_appname' => sqlfs_stream_wrapper::EACL_APPNAME),__LINE__,__FILE__); - - $GLOBALS['egw_setup']->setup_account_object(); - $accounts = $GLOBALS['egw_setup']->accounts; - $accounts = new accounts(); - - egw_vfs::$is_root = true; // we need root rights to set the extended acl, without being the owner - - foreach($GLOBALS['egw_setup']->db->select('egw_acl','*',array( - 'acl_appname' => 'filemanager', - "acl_location != 'run'", - ),__LINE__,__FILE__) as $row) - { - $rights = egw_vfs::READABLE | egw_vfs::EXECUTABLE; - if($row['acl_rights'] > 1) $rights |= egw_vfs::WRITABLE; - - if (($lid = $accounts->id2name($row['acl_account'])) && $accounts->exists($row['acl_location'])) + foreach($row as $key => $val) { - $ret = sqlfs_stream_wrapper::eacl('/home/'.$lid,$rights,(int)$row['acl_location']); - //echo "

sqlfs_stream_wrapper::eacl('/home/$lid',$rights,$row[acl_location])=$ret

\n"; + if (is_numeric($key)) unset($row[$key]); + } + print_r($row); + print_r($nrow); + } + if ($row['vfs_mime_type'] == 'Directory') + { + $dir = ($row['vfs_directory'] == '/' ? '' : $row['vfs_directory']).'/'.$row['vfs_name']; + + if (!isset($dirs[$dir])) // ignoring doublicate dirs, my devel box has somehow many of them specially /home + { + $GLOBALS['egw_setup']->db->insert('egw_sqlfs',$nrow,false,__LINE__,__FILE__,'phpgwapi'); + $dirs[$dir] = $GLOBALS['egw_setup']->db->get_last_insert_id('egw_sqlfs','fs_id'); + if ($debug) echo "$dir = {$dirs[$dir]}\n"; + } + elseif ($debug) + { + echo "ignoring doublicate directory '$dir'!\n"; } } - egw_vfs::$is_root = false; - - return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.005'; - } - - $test[] = '1.5.005'; - function phpgwapi_upgrade1_5_005() - { - // move /infolog/$app to /apps/$app and /infolog to /apps/infolog - - $files_dir = $GLOBALS['egw_setup']->db->select('egw_config','config_value',array( - 'config_name' => 'files_dir', - 'config_app' => 'phpgwapi', - ),__LINE__,__FILE__)->fetchSingle(); - - if ($files_dir && file_exists($files_dir) && file_exists($files_dir.'/infolog')) + else { - mkdir($files_dir.'/apps',0700,true); - if (($dir = opendir($files_dir.'/infolog'))) + $GLOBALS['egw_setup']->db->insert('egw_sqlfs',$nrow,false,__LINE__,__FILE__,'phpgwapi'); + } + + } + if ($debug) + { + echo "dirs="; + print_r($dirs); + echo "
\n"; + } + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.004'; +} + +$test[] = '1.5.004'; +function phpgwapi_upgrade1_5_004() +{ + // convert the filemanager group grants into extended ACL + + // delete all sqlfs entries from the ACL table, in case we run multiple times + $GLOBALS['egw_setup']->db->delete('egw_acl',array('acl_appname' => sqlfs_stream_wrapper::EACL_APPNAME),__LINE__,__FILE__); + + $GLOBALS['egw_setup']->setup_account_object(); + $accounts = $GLOBALS['egw_setup']->accounts; + $accounts = new accounts(); + + egw_vfs::$is_root = true; // we need root rights to set the extended acl, without being the owner + + foreach($GLOBALS['egw_setup']->db->select('egw_acl','*',array( + 'acl_appname' => 'filemanager', + "acl_location != 'run'", + ),__LINE__,__FILE__) as $row) + { + $rights = egw_vfs::READABLE | egw_vfs::EXECUTABLE; + if($row['acl_rights'] > 1) $rights |= egw_vfs::WRITABLE; + + if (($lid = $accounts->id2name($row['acl_account'])) && $accounts->exists($row['acl_location'])) + { + $ret = sqlfs_stream_wrapper::eacl('/home/'.$lid,$rights,(int)$row['acl_location']); + //echo "

sqlfs_stream_wrapper::eacl('/home/$lid',$rights,$row[acl_location])=$ret

\n"; + } + } + egw_vfs::$is_root = false; + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.005'; +} + +$test[] = '1.5.005'; +function phpgwapi_upgrade1_5_005() +{ + // move /infolog/$app to /apps/$app and /infolog to /apps/infolog + + $files_dir = $GLOBALS['egw_setup']->db->select('egw_config','config_value',array( + 'config_name' => 'files_dir', + 'config_app' => 'phpgwapi', + ),__LINE__,__FILE__)->fetchSingle(); + + if ($files_dir && file_exists($files_dir) && file_exists($files_dir.'/infolog')) + { + mkdir($files_dir.'/apps',0700,true); + if (($dir = opendir($files_dir.'/infolog'))) + { + while(($app = readdir($dir))) { - while(($app = readdir($dir))) + if (!is_numeric($app) && $app[0] != '.') // ingore infolog entries and . or .. { - if (!is_numeric($app) && $app[0] != '.') // ingore infolog entries and . or .. - { - rename($files_dir.'/infolog/'.$app,$files_dir.'/apps/'.$app); - } + rename($files_dir.'/infolog/'.$app,$files_dir.'/apps/'.$app); } - closedir($dir); - rename($files_dir.'/infolog',$files_dir.'/apps/infolog'); } + closedir($dir); + rename($files_dir.'/infolog',$files_dir.'/apps/infolog'); } - - return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.006'; } + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.006'; +} + +$test[] = '1.5.006'; +function phpgwapi_upgrade1_5_006() +{ + // drop filescenter tables, if filecenter is not installed + static $filescenter_tables = array( + 'phpgw_vfs2_mimetypes', + 'phpgw_vfs2_files', + 'phpgw_vfs2_customfields', + 'phpgw_vfs2_quota', + 'phpgw_vfs2_shares', + 'phpgw_vfs2_versioning', + 'phpgw_vfs2_customfields_data', + 'phpgw_vfs2_prefixes', + ); + $filescenter_app = $GLOBALS['egw_setup']->db->select('egw_applications','*',array( + 'app_name' => 'filescenter', + ),__LINE__,__FILE__)->fetchSingle(); + + if (!$filescenter_app || !is_dir(EGW_INCLUDE_ROOT.'/filescenter')) + { + foreach($filescenter_tables as $table) + { + schema_proc::DropTable($table); + } + if ($filescenter_app) // app installed, but no sources --> deinstall it + { + $GLOBALS['egw_setup']->db->delete('egw_applications',array( + 'app_name' => 'filescenter', + ),__LINE__,__FILE__); + } + } + else + { + // move tables to the filescenter app + $GLOBALS['egw_setup']->db->update('egw_applications',array( + 'app_tables' => implode(',',$filescenter_tables), + ),array( + 'app_name' => 'filescenter', + ),__LINE__,__FILE__); + } + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.007'; +} + +$test[] = '1.5.007'; +function phpgwapi_upgrade1_5_007() +{ + // tables for the eGW-wide index + + foreach(array( + 'egw_index_keywords' => array( + 'fd' => array( + 'si_id' => array('type' => 'auto','nullable' => False), + 'si_keyword' => array('type' => 'varchar','precision' => '64','nullable' => False), + 'si_ignore' => array('type' => 'bool') + ), + 'pk' => array('si_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array('si_keyword') + ), + 'egw_index' => array( + 'fd' => array( + 'si_app' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'si_app_id' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'si_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'si_owner' => array('type' => 'int','precision' => '4','nullable' => False) + ), + 'pk' => array('si_app','si_app_id','si_id'), + 'fk' => array(), + 'ix' => array('si_id'), + 'uc' => array() + ), + 'egw_cat2entry' => array( + 'fd' => array( + 'ce_app' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'ce_app_id' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'cat_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'ce_owner' => array('type' => 'int','precision' => '4','nullable' => False) + ), + 'pk' => array('ce_app','ce_app_id','cat_id'), + 'fk' => array(), + 'ix' => array('cat_id'), + 'uc' => array() + )) as $table => $definition) + { + $GLOBALS['egw_setup']->oProc->CreateTable($table,$definition); + } + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.5.008'; +} \ No newline at end of file