Merge branch 'iconfig'
This commit is contained in:
		| @@ -849,7 +849,7 @@ function get_item_elements($x,$allow_code = false) { | ||||
| 	if($allow_code) | ||||
| 		$arr['body'] = $x['body']; | ||||
| 	else | ||||
| 		$arr['body']         = (($x['body']) ? htmlspecialchars($x['body'],ENT_COMPAT,'UTF-8',false) : ''); | ||||
| 		$arr['body'] = (($x['body']) ? htmlspecialchars($x['body'],ENT_COMPAT,'UTF-8',false) : ''); | ||||
|  | ||||
| 	$key = get_config('system','pubkey'); | ||||
|  | ||||
| @@ -917,6 +917,7 @@ function get_item_elements($x,$allow_code = false) { | ||||
|  | ||||
| 	$arr['attach']       = activity_sanitise($x['attach']); | ||||
| 	$arr['term']         = decode_tags($x['tags']); | ||||
| 	$arr['iconfig']      = decode_item_meta($x['meta']); | ||||
|  | ||||
| 	$arr['item_private'] = ((array_key_exists('flags',$x) && is_array($x['flags']) && in_array('private',$x['flags'])) ? 1 : 0); | ||||
|  | ||||
| @@ -1324,6 +1325,9 @@ function encode_item($item,$mirror = false) { | ||||
| 	if($item['term']) | ||||
| 		$x['tags']        = encode_item_terms($item['term'],$mirror); | ||||
|  | ||||
| 	if($item['iconfig']) | ||||
| 		$x['meta']        = encode_item_meta($item['iconfig'],$mirror); | ||||
|  | ||||
| 	if($item['diaspora_meta']) { | ||||
| 		$z = json_decode($item['diaspora_meta'],true); | ||||
| 		if($z) { | ||||
| @@ -1434,6 +1438,29 @@ function encode_item_terms($terms,$mirror = false) { | ||||
| 	return $ret; | ||||
| } | ||||
|  | ||||
| function encode_item_meta($meta,$mirror = false) { | ||||
| 	$ret = array(); | ||||
|  | ||||
| 	if($meta) { | ||||
| 		foreach($meta as $m) { | ||||
| 			$ret[] = array('family' => $m['cat'], 'key' => $m['k'], 'value' => $m['v']); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return $ret; | ||||
| } | ||||
|  | ||||
| function decode_item_meta($meta) { | ||||
| 	$ret = array(); | ||||
|  | ||||
| 	if(is_array($meta) && $meta) { | ||||
| 		foreach($meta as $m) { | ||||
| 			$ret[] = array('cat' => escape_tags($m['family']),'k' => escape_tags($m['key']),'v' => $m['value']); | ||||
| 		} | ||||
| 	} | ||||
| 	return $ret;		 | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * @brief | ||||
|  * | ||||
| @@ -2446,6 +2473,13 @@ function item_store($arr, $allow_exec = false, $deliver = true) { | ||||
| 		unset($arr['term']); | ||||
| 	} | ||||
|  | ||||
| 	$meta = null; | ||||
| 	if(array_key_exists('iconfig',$arr)) { | ||||
| 		$meta = $arr['iconfig']; | ||||
| 		unset($arr['iconfig']); | ||||
| 	} | ||||
|  | ||||
|  | ||||
|  	if(strlen($allow_cid) || strlen($allow_gid) || strlen($deny_cid) || strlen($deny_gid) || strlen($public_policy)) | ||||
| 		$private = 1; | ||||
| 	else | ||||
| @@ -2523,6 +2557,15 @@ function item_store($arr, $allow_exec = false, $deliver = true) { | ||||
| 		$arr['term'] = $terms; | ||||
| 	} | ||||
|  | ||||
| 	if($meta) { | ||||
| 		foreach($meta as $m) { | ||||
| 			set_iconfig($current_post,$m['cat'],$m['k'],$m['v']); | ||||
| 		} | ||||
| 		$arr['iconfig'] = $meta; | ||||
| 	} | ||||
|  | ||||
|  | ||||
|  | ||||
| 	call_hooks('post_remote_end',$arr); | ||||
|  | ||||
| 	// update the commented timestamp on the parent | ||||
| @@ -2744,6 +2787,13 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) { | ||||
| 		unset($arr['term']); | ||||
| 	} | ||||
|  | ||||
| 	$meta = null; | ||||
| 	if(array_key_exists('iconfig',$arr)) { | ||||
| 		$meta = $arr['iconfig']; | ||||
| 		unset($arr['iconfig']); | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	dbesc_array($arr); | ||||
|  | ||||
| 	logger('item_store_update: ' . print_r($arr,true), LOGGER_DATA); | ||||
| @@ -2785,6 +2835,17 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) { | ||||
| 		$arr['term'] = $terms; | ||||
| 	} | ||||
|  | ||||
| 	$r = q("delete from iconfig where iid = %d", | ||||
| 		intval($orig_post_id) | ||||
| 	); | ||||
|  | ||||
| 	if($meta) { | ||||
| 		foreach($meta as $m) { | ||||
| 			set_iconfig($orig_post_id,$m['cat'],$m['k'],$m['v']); | ||||
| 		} | ||||
| 		$arr['iconfig'] = $meta; | ||||
| 	} | ||||
|  | ||||
| 	call_hooks('post_remote_update_end',$arr); | ||||
|  | ||||
| 	if($deliver) { | ||||
| @@ -4688,6 +4749,10 @@ function fetch_post_tags($items,$link = false) { | ||||
| 			dbesc($tag_finder_str), | ||||
| 			intval(TERM_OBJ_POST) | ||||
| 		); | ||||
| 		$imeta = q("select * from iconfig where iid in ( %s )", | ||||
| 			dbesc($tag_finder_str) | ||||
| 		);  | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	for($x = 0; $x < count($items); $x ++) { | ||||
| @@ -4711,6 +4776,26 @@ function fetch_post_tags($items,$link = false) { | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		if($imeta) { | ||||
| 			foreach($imeta as $i) { | ||||
| 				if(array_key_exists('item_id',$items[$x])) { | ||||
| 					if($i['iid'] == $items[$x]['item_id']) { | ||||
| 						if(! is_array($items[$x]['iconfig'])) | ||||
| 							$items[$x]['iconfig'] = array(); | ||||
| 						$i['v'] = ((preg_match('|^a:[0-9]+:{.*}$|s',$i['v'])) ? unserialize($i['v']) : $i['v']); | ||||
| 						$items[$x]['iconfig'][] = $i; | ||||
| 					} | ||||
| 				} | ||||
| 				else { | ||||
| 					if($i['iid'] == $items[$x]['id']) { | ||||
| 						if(! is_array($items[$x]['iconfig'])) | ||||
| 							$items[$x]['iconfig'] = array(); | ||||
| 						$i['v'] = ((preg_match('|^a:[0-9]+:{.*}$|s',$i['v'])) ? unserialize($i['v']) : $i['v']); | ||||
| 						$items[$x]['iconfig'][] = $i; | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return $items; | ||||
| @@ -5373,3 +5458,140 @@ function send_profile_photo_activity($channel,$photo,$profile) { | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| function get_iconfig(&$item, $family, $key) { | ||||
|  | ||||
| 	$is_item = false; | ||||
| 	if(is_array($item)) { | ||||
| 		$is_item = true; | ||||
| 		if((! array_key_exists('iconfig',$item)) || (! is_array($item['iconfig']))) | ||||
| 			$item['iconfig'] = array(); | ||||
|  | ||||
| 		if(array_key_exists('item_id',$item)) | ||||
| 			$iid = $item['item_id']; | ||||
| 		else | ||||
| 			$iid = $item['id']; | ||||
| 	} | ||||
| 	elseif(intval($item)) | ||||
| 		$iid = $item; | ||||
|  | ||||
| 	if(! $iid) | ||||
| 		return false; | ||||
|  | ||||
| 	if(is_array($item) && array_key_exists('iconfig',$item) && is_array($item['iconfig'])) { | ||||
| 		foreach($item['iconfig'] as $c) { | ||||
| 			if($c['iid'] == $iid && $c['cat'] == $family && $c['k'] == $key) | ||||
| 				return $c['v']; | ||||
| 		} | ||||
| 	} | ||||
| 		  | ||||
| 	$r = q("select * from iconfig where iid = %d and cat = '%s' and k = '%s' limit 1", | ||||
| 		intval($iid), | ||||
| 		dbesc($family), | ||||
| 		dbesc($key) | ||||
| 	); | ||||
| 	if($r) { | ||||
| 		$r[0]['v'] = ((preg_match('|^a:[0-9]+:{.*}$|s',$r[0]['v'])) ? unserialize($r[0]['v']) : $r[0]['v']); | ||||
| 		if($is_item) | ||||
| 			$item['iconfig'][] = $r[0]; | ||||
| 		return $r[0]['v']; | ||||
| 	} | ||||
| 	return false; | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| function set_iconfig(&$item, $family, $key, $value) { | ||||
|  | ||||
| 	$dbvalue = ((is_array($value))  ? serialize($value) : $value); | ||||
| 	$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue)  : $dbvalue); | ||||
|  | ||||
| 	$is_item = false; | ||||
| 	$idx = null; | ||||
|  | ||||
| 	if(is_array($item)) { | ||||
| 		$is_item = true; | ||||
| 		if((! array_key_exists('iconfig',$item)) || (! is_array($item['iconfig']))) | ||||
| 			$item['iconfig'] = array(); | ||||
| 		elseif($item['iconfig']) { | ||||
| 			for($x = 0; $x < count($item['iconfig']); $x ++) { | ||||
| 				if($item['iconfig'][$x]['cat'] == $family && $item['iconfig'][$x]['k'] == $key) { | ||||
| 					$idx = $x; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		$entry = array('cat' => $family, 'k' => $key, 'v' => $value); | ||||
|  | ||||
| 		if(is_null($idx)) | ||||
| 			$item['iconfig'][] = $entry; | ||||
| 		else | ||||
| 			$item['iconfig'][$idx] = $entry; | ||||
| 		return $value; | ||||
| 	} | ||||
|  | ||||
| 	if(intval($item)) | ||||
| 		$iid = intval($item); | ||||
|  | ||||
| 	if(! $iid) | ||||
| 		return false; | ||||
|  | ||||
| 	if(get_iconfig($item, $family, $key) === false) { | ||||
| 		$r = q("insert into iconfig( iid, cat, k, v ) values ( %d, '%s', '%s', '%s' ) ", | ||||
| 			intval($iid), | ||||
| 			dbesc($family), | ||||
| 			dbesc($key), | ||||
| 			dbesc($dbvalue) | ||||
| 		); | ||||
| 	} | ||||
| 	else { | ||||
| 		$r = q("update iconfig set v = '%s' where iid = %d and cat = '%s' and  k = '%s' ", | ||||
| 			dbesc($dbvalue), | ||||
| 			intval($iid), | ||||
| 			dbesc($family), | ||||
| 			dbesc($key) | ||||
| 		); | ||||
| 	} | ||||
|  | ||||
| 	if(! $r) | ||||
| 		return false; | ||||
|  | ||||
| 	return $value; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| function del_iconfig(&$item, $family, $key) { | ||||
|  | ||||
|  | ||||
| 	$is_item = false; | ||||
| 	$idx = null; | ||||
|  | ||||
| 	if(is_array($item)) { | ||||
| 		$is_item = true; | ||||
| 		if(is_array($item['iconfig'])) { | ||||
| 			for($x = 0; $x < count($item['iconfig']); $x ++) { | ||||
| 				if($item['iconfig'][$x]['cat'] == $family && $item['iconfig'][$x]['k'] == $key) { | ||||
| 					unset($item['iconfig'][$x]); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		return true; | ||||
| 	} | ||||
|  | ||||
| 	if(intval($item)) | ||||
| 		$iid = intval($item); | ||||
|  | ||||
| 	if(! $iid) | ||||
| 		return false; | ||||
|  | ||||
| 	return q("delete from iconfig where iid = %d and cat = '%s' and  k = '%s' ", | ||||
| 		intval($iid), | ||||
| 		dbesc($family), | ||||
| 		dbesc($key) | ||||
| 	); | ||||
|  | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										10
									
								
								mod/item.php
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								mod/item.php
									
									
									
									
									
								
							| @@ -233,6 +233,8 @@ function item_post(&$a) { | ||||
| 			$post_id = $i[0]['iid'];	 | ||||
| 	} | ||||
|  | ||||
| 	$iconfig = null; | ||||
|  | ||||
| 	if($post_id) { | ||||
| 		$i = q("SELECT * FROM `item` WHERE `uid` = %d AND `id` = %d LIMIT 1", | ||||
| 			intval($profile_uid), | ||||
| @@ -241,6 +243,9 @@ function item_post(&$a) { | ||||
| 		if(! count($i)) | ||||
| 			killme(); | ||||
| 		$orig_post = $i[0]; | ||||
| 		$iconfig = q("select * from iconfig where iid = %d", | ||||
| 			intval($post_id) | ||||
| 		); | ||||
| 	} | ||||
|  | ||||
|  | ||||
| @@ -792,6 +797,9 @@ function item_post(&$a) { | ||||
| 	$datarray['plink']          = $plink; | ||||
| 	$datarray['route']          = $route; | ||||
|  | ||||
| 	if($iconfig) | ||||
| 		$datarray['iconfig'] = $iconfig; | ||||
|  | ||||
| 	// preview mode - prepare the body for display and send it via json | ||||
|  | ||||
| 	if($preview) { | ||||
| @@ -808,8 +816,6 @@ function item_post(&$a) { | ||||
| 	if($orig_post) | ||||
| 		$datarray['edit'] = true; | ||||
|  | ||||
|  | ||||
|  | ||||
| 	if(feature_enabled($profile_uid,'suppress_duplicates') && (! $orig_post)) { | ||||
|  | ||||
| 		$z = q("select created from item where uid = %d and body = '%s'", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user