| 27 | | function MTDatabaseBase($dbuser, $dbpassword = '', $dbname = '', $dbhost = '', $dbport = '', $dbsocket = '') { |
|---|
| | 27 | ## temporary until we class our objects properly |
|---|
| | 28 | var $object_meta = array( |
|---|
| | 29 | 'blog' => array( |
|---|
| | 30 | 'commenter_authenticators', |
|---|
| | 31 | 'nofollow_urls', |
|---|
| | 32 | 'follow_auth_links', |
|---|
| | 33 | 'captcha_provider', |
|---|
| | 34 | 'template_set', |
|---|
| | 35 | 'page_layout', |
|---|
| | 36 | 'include_system', |
|---|
| | 37 | 'include_cache'), |
|---|
| | 38 | 'template' => array( |
|---|
| | 39 | 'page_layout', |
|---|
| | 40 | 'include_with_ssi', |
|---|
| | 41 | 'use_cache', |
|---|
| | 42 | 'cache_expire_type', |
|---|
| | 43 | 'cache_expire_interval', |
|---|
| | 44 | 'cache_expire_event'), |
|---|
| | 45 | 'asset' => array('image_width', |
|---|
| | 46 | 'image_height') |
|---|
| | 47 | ); |
|---|
| | 48 | var $_meta_cache = array(); |
|---|
| | 49 | |
|---|
| | 50 | function MTDatabaseBase($dbuser, $dbpassword = '', $dbname = '', |
|---|
| | 51 | $dbhost = '', $dbport = '', $dbsocket = '') { |
|---|
| | 2883 | } |
|---|
| | 2884 | |
|---|
| | 2885 | function get_meta($obj_type, $obj_id) { |
|---|
| | 2886 | $real_type = $obj_type; |
|---|
| | 2887 | if ('page' == strtolower($obj_type)) |
|---|
| | 2888 | $real_type = 'entry'; |
|---|
| | 2889 | elseif ('folder' == strtolower($obj_type)) |
|---|
| | 2890 | $real_type = 'category'; |
|---|
| | 2891 | |
|---|
| | 2892 | $meta = $this->_meta_cache["${obj_type}_meta_${obj_id}"]; |
|---|
| | 2893 | if (!$meta) { |
|---|
| | 2894 | $datasource = $real_type; |
|---|
| | 2895 | $datasource = preg_replace("/^mt_/", "", $datasource); |
|---|
| | 2896 | $result = $this->get_results("select * from mt_${datasource}_meta where ${datasource}_meta_${datasource}_id = $obj_id", ARRAY_A); |
|---|
| | 2897 | $field_prefix = "${datasource}_meta_"; |
|---|
| | 2898 | $meta = array(); |
|---|
| | 2899 | foreach ($result as $cfrow) { |
|---|
| | 2900 | unset($value); |
|---|
| | 2901 | unset($field); |
|---|
| | 2902 | // need to test for each v* column to see which is populated |
|---|
| | 2903 | // take that value and store for meta row |
|---|
| | 2904 | foreach ($cfrow as $cffield => $cfvalue) { |
|---|
| | 2905 | if (preg_match("/^${field_prefix}v/", $cffield)) { |
|---|
| | 2906 | if (isset($cfvalue)) { |
|---|
| | 2907 | $value = $cfvalue; |
|---|
| | 2908 | $field = $cffield; |
|---|
| | 2909 | break; |
|---|
| | 2910 | } |
|---|
| | 2911 | } |
|---|
| | 2912 | } |
|---|
| | 2913 | if (isset($value)) { |
|---|
| | 2914 | if (preg_match("/_vblob$/", $field)) { |
|---|
| | 2915 | # unserialize blob if value is serialized |
|---|
| | 2916 | if (preg_match("/^BIN:SERG/", $value)) { |
|---|
| | 2917 | $value = $this->unserialize($value); |
|---|
| | 2918 | } |
|---|
| | 2919 | elseif (preg_match("/^ASC:/", $value)) { |
|---|
| | 2920 | $value = preg_replace("/^ASC:/", "", $value); |
|---|
| | 2921 | } |
|---|
| | 2922 | } |
|---|
| | 2923 | $meta[$cfrow["${datasource}_meta_type"]] = $value; |
|---|
| | 2924 | } |
|---|
| | 2925 | } |
|---|
| | 2926 | $this->_meta_cache["${obj_type}_meta_${obj_id}"] = $meta; |
|---|
| | 2927 | } |
|---|
| | 2928 | |
|---|
| | 2929 | return $meta; |
|---|