diff options
284 files changed, 6296 insertions, 4563 deletions
diff --git a/Zotlabs/Access/PermissionLimits.php b/Zotlabs/Access/PermissionLimits.php index 9ee0656b1..1d15098fc 100644 --- a/Zotlabs/Access/PermissionLimits.php +++ b/Zotlabs/Access/PermissionLimits.php @@ -41,8 +41,10 @@ class PermissionLimits { $limits = []; $perms = Permissions::Perms(); + $anon_comments = get_config('system','anonymous_comments',true); + foreach($perms as $k => $v) { - if(strstr($k, 'view') || $k === 'post_comments') + if(strstr($k, 'view') || ($k === 'post_comments' && $anon_comments)) $limits[$k] = PERMS_PUBLIC; else $limits[$k] = PERMS_SPECIFIC; diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php index b168db5ae..fa2368a92 100644 --- a/Zotlabs/Daemon/Notifier.php +++ b/Zotlabs/Daemon/Notifier.php @@ -618,8 +618,8 @@ class Notifier { $packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null)); } if($packet_type === 'keychange') { - $packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null)); $pmsg = get_pconfig($channel['channel_id'],'system','keychange'); + $packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null)); } elseif($packet_type === 'request') { $env = (($hub_env && $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']]) ? $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] : ''); @@ -640,7 +640,21 @@ class Notifier { } else { $env = (($hub_env && $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']]) ? $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] : ''); - $packet = zot_build_packet($channel,'notify',$env,(($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); + + // currently zot6 delivery is only performed on normal items and not sync items or mail or anything else + // Eventually we will do this for all deliveries, but for now ensure this is precisely what we are dealing + // with before switching to zot6 as the primary zot6 handler checks for the existence of a message delivery report + // to trigger dequeue'ing + + $z6 = (($encoded_item && $encoded_item['type'] === 'activity' && (! array_key_exists('allow_cid',$encoded_item))) ? true : false); + if($z6) { + $packet = zot6_build_packet($channel,'notify',$env, json_encode($encoded_item), (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); + } + else { + $packet = zot_build_packet($channel,'notify',$env, (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); + + } + queue_insert( [ 'hash' => $hash, diff --git a/Zotlabs/Daemon/Queue.php b/Zotlabs/Daemon/Queue.php index 17d150250..8f529ff13 100644 --- a/Zotlabs/Daemon/Queue.php +++ b/Zotlabs/Daemon/Queue.php @@ -13,10 +13,10 @@ class Queue { require_once('include/bbcode.php'); - if(argc() > 1) - $queue_id = argv(1); + if($argc > 1) + $queue_id = $argv[1]; else - $queue_id = 0; + $queue_id = EMPTY_STR; logger('queue: start'); diff --git a/Zotlabs/Identity/OAuth2Server.php b/Zotlabs/Identity/OAuth2Server.php new file mode 100644 index 000000000..cbb4748fe --- /dev/null +++ b/Zotlabs/Identity/OAuth2Server.php @@ -0,0 +1,34 @@ +<?php + +namespace Zotlabs\Identity; + +class OAuth2Server extends \OAuth2\Server { + + public function __construct(OAuth2Storage $storage, $config = []) { + + if(! is_array($config)) { + $config = [ + 'use_openid_connect' => true, + 'issuer' => \Zotlabs\Lib\System::get_site_name() + ]; + } + + parent::__construct($storage, $config); + + // Add the "Client Credentials" grant type (it is the simplest of the grant types) + $this->addGrantType(new \OAuth2\GrantType\ClientCredentials($storage)); + + // Add the "Authorization Code" grant type (this is where the oauth magic happens) + $this->addGrantType(new \OAuth2\GrantType\AuthorizationCode($storage)); + + $keyStorage = new \OAuth2\Storage\Memory( [ + 'keys' => [ + 'public_key' => get_config('system', 'pubkey'), + 'private_key' => get_config('system', 'prvkey') + ] + ]); + + $this->addStorage($keyStorage, 'public_key'); + } + +} diff --git a/Zotlabs/Identity/OAuth2Storage.php b/Zotlabs/Identity/OAuth2Storage.php new file mode 100644 index 000000000..bc6db565c --- /dev/null +++ b/Zotlabs/Identity/OAuth2Storage.php @@ -0,0 +1,81 @@ +<?php + +namespace Zotlabs\Identity; + + +class OAuth2Storage extends \OAuth2\Storage\Pdo { + + /** + * @param string $username + * @param string $password + * @return bool + */ + public function checkUserCredentials($username, $password) + { + if ($user = $this->getUser($username)) { + return $this->checkPassword($user, $password); + } + + return false; + } + + /** + * @param string $username + * @return array|bool + */ + public function getUserDetails($username) + { + return $this->getUser($username); + } + + + /** + * + * @param array $user + * @param string $password + * @return bool + */ + protected function checkPassword($user, $password) + { + + $x = account_verify_password($user,$password); + return((array_key_exists('channel',$x) && ! empty($x['channel'])) ? true : false); + + } + + /** + * @param string $username + * @return array|bool + */ + public function getUser($username) + { + + $x = channelx_by_nick($username); + if(! $x) { + return false; + } + + return( [ + 'username' => $x['channel_address'], + 'user_id' => $x['channel_id'], + 'firstName' => $x['channel_name'], + 'lastName' => '', + 'password' => 'NotARealPassword' + ] ); + } + + /** + * plaintext passwords are bad! Override this for your application + * + * @param string $username + * @param string $password + * @param string $firstName + * @param string $lastName + * @return bool + */ + public function setUser($username, $password, $firstName = null, $lastName = null) + { + return true; + } + +}
\ No newline at end of file diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php index d2a307fd5..f91dc8e49 100644 --- a/Zotlabs/Lib/Apps.php +++ b/Zotlabs/Lib/Apps.php @@ -119,6 +119,7 @@ class Apps { static public function parse_app_description($f,$translate = true) { + $ret = array(); $baseurl = z_root(); @@ -194,6 +195,10 @@ class Apps { if(! is_public_profile()) unset($ret); break; + case 'public_stream': + if(! can_view_public_stream()) + unset($ret); + break; case 'observer': if(! $observer) unset($ret); @@ -346,6 +351,10 @@ class Apps { if(! is_public_profile()) return ''; break; + case 'public_stream': + if(! can_view_public_stream()) + return ''; + break; case 'observer': $observer = \App::get_observer(); if(! $observer) diff --git a/Zotlabs/Lib/DB_Upgrade.php b/Zotlabs/Lib/DB_Upgrade.php index 8f0488f6f..4038a2d53 100644 --- a/Zotlabs/Lib/DB_Upgrade.php +++ b/Zotlabs/Lib/DB_Upgrade.php @@ -10,22 +10,12 @@ class DB_Upgrade { function __construct($db_revision) { - $platform_name = System::get_platform_name(); + $this->config_name = 'db_version'; + $this->func_prefix = '_'; - $update_file = 'install/' . $platform_name . '/update.php'; - if(! file_exists($update_file)) { - $update_file = 'install/update.php'; - $this->config_name = 'db_version'; - $this->func_prefix = 'update_r'; - } - else { - $this->config_name = $platform_name . '_db_version'; - $this->func_prefix = $platform_name . '_update_'; - } - - $build = get_config('system', $this->config_name, 0); + $build = get_config('system', 'db_version', 0); if(! intval($build)) - $build = set_config('system', $this->config_name, $db_revision); + $build = set_config('system', 'db_version', $db_revision); if($build == $db_revision) { // Nothing to be done. @@ -40,82 +30,78 @@ class DB_Upgrade { $current = intval($db_revision); - if(($stored < $current) && file_exists($update_file)) { + if($stored < $current) { - Config::Load('database'); + // The last update we performed was $stored. + // Start at $stored + 1 and continue until we have completed $current - // We're reporting a different version than what is currently installed. - // Run any existing update scripts to bring the database up to current. - - require_once($update_file); + for($x = $stored + 1; $x <= $current; $x ++) { + $s = '_' . $x; + $cls = '\\Zotlabs\Update\\' . $s ; + if(! class_exists($cls)) { + return; + } - // make sure that boot.php and update.php are the same release, we might be - // updating from git right this very second and the correct version of the update.php - // file may not be here yet. This can happen on a very busy site. + // There could be a lot of processes running or about to run. + // We want exactly one process to run the update command. + // So store the fact that we're taking responsibility + // after first checking to see if somebody else already has. - if($db_revision == UPDATE_VERSION) { - for($x = $stored; $x < $current; $x ++) { - $func = $this->func_prefix . $x; - if(function_exists($func)) { - // There could be a lot of processes running or about to run. - // We want exactly one process to run the update command. - // So store the fact that we're taking responsibility - // after first checking to see if somebody else already has. + // If the update fails or times-out completely you may need to + // delete the config entry to try again. - // If the update fails or times-out completely you may need to - // delete the config entry to try again. + Config::Load('database'); - if(get_config('database', $func)) - break; - set_config('database',$func, '1'); - // call the specific update + if(get_config('database', $s)) + break; + set_config('database',$s, '1'); + - $retval = $func(); - if($retval) { + $c = new $cls(); + $retval = $c->run(); - // Prevent sending hundreds of thousands of emails by creating - // a lockfile. + if($retval != UPDATE_SUCCESS) { - $lockfile = 'store/[data]/mailsent'; + // Prevent sending hundreds of thousands of emails by creating + // a lockfile. - if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 86400))) - return; - @unlink($lockfile); - //send the administrator an e-mail - file_put_contents($lockfile, $x); - - $r = q("select account_language from account where account_email = '%s' limit 1", - dbesc(\App::$config['system']['admin_email']) - ); - push_lang(($r) ? $r[0]['account_language'] : 'en'); + $lockfile = 'store/[data]/mailsent'; - z_mail( + if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 86400))) + return; + @unlink($lockfile); + //send the administrator an e-mail + file_put_contents($lockfile, $x); + + $r = q("select account_language from account where account_email = '%s' limit 1", + dbesc(\App::$config['system']['admin_email']) + ); + push_lang(($r) ? $r[0]['account_language'] : 'en'); + z_mail( + [ + 'toEmail' => \App::$config['system']['admin_email'], + 'messageSubject' => sprintf( t('Update Error at %s'), z_root()), + 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'), [ - 'toEmail' => \App::$config['system']['admin_email'], - 'messageSubject' => sprintf( t('Update Error at %s'), z_root()), - 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'), - [ - '$sitename' => \App::$config['system']['sitename'], - '$siteurl' => z_root(), - '$update' => $x, - '$error' => sprintf( t('Update %s failed. See error logs.'), $x) - ] - ) + '$sitename' => \App::$config['system']['sitename'], + '$siteurl' => z_root(), + '$update' => $x, + '$error' => sprintf( t('Update %s failed. See error logs.'), $x) ] - ); - - //try the logger - logger('CRITICAL: Update Failed: ' . $x); - pop_lang(); - } - else { - set_config('database',$func, 'success'); - } - } + ) + ] + ); + + //try the logger + logger('CRITICAL: Update Failed: ' . $x); + pop_lang(); + } + else { + set_config('database',$s, 'success'); } - set_config('system', $this->config_name, $db_revision); } } + set_config('system', 'db_version', $db_revision); } } }
\ No newline at end of file diff --git a/Zotlabs/Lib/Enotify.php b/Zotlabs/Lib/Enotify.php index 5cf4ec31d..c5bc706c2 100644 --- a/Zotlabs/Lib/Enotify.php +++ b/Zotlabs/Lib/Enotify.php @@ -112,6 +112,8 @@ class Enotify { } + $always_show_in_notices = get_pconfig($recip['channel_id'],'system','always_show_in_notices'); + // e.g. "your post", "David's photo", etc. $possess_desc = t('%s <!item_type!>'); @@ -128,18 +130,28 @@ class Enotify { } if ($params['type'] == NOTIFY_COMMENT) { -// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG); + //logger("notification: params = " . print_r($params, true), LOGGER_DEBUG); $moderated = (($params['item']['item_blocked'] == ITEM_MODERATED) ? true : false); $itemlink = $params['link']; - // ignore like/unlike activity on posts - they probably require a separate notification preference + $action = 'commented on'; + + if(array_key_exists('item',$params) && in_array($params['item']['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) { + + if(! $always_show_in_notices) { + logger('notification: not a visible activity. Ignoring.'); + pop_lang(); + return; + } + + if(activity_match($params['verb'], ACTIVITY_LIKE)) + $action = 'liked'; + + if(activity_match($params['verb'], ACTIVITY_DISLIKE)) + $action = 'disliked'; - if (array_key_exists('item',$params) && (! visible_activity($params['item']))) { - logger('notification: not a visible activity. Ignoring.'); - pop_lang(); - return; } $parent_mid = $params['parent_mid']; @@ -181,26 +193,29 @@ class Enotify { //$possess_desc = str_replace('<!item_type!>',$possess_desc); // "a post" - $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]'), + $dest_str = sprintf(t('%1$s, %2$s %3$s [zrl=%4$s]a %5$s[/zrl]'), $recip['channel_name'], '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', + $action, $itemlink, $item_post_type); // "George Bull's post" if($p) - $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]%4$s\'s %5$s[/zrl]'), + $dest_str = sprintf(t('%1$s, %2$s %3$s [zrl=%4$s]%5$s\'s %6$s[/zrl]'), $recip['channel_name'], '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', + $action, $itemlink, $p[0]['author']['xchan_name'], $item_post_type); // "your post" if($p[0]['owner']['xchan_name'] == $p[0]['author']['xchan_name'] && intval($p[0]['item_wall'])) - $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]'), + $dest_str = sprintf(t('%1$s, %2$s %3$s [zrl=%4$s]your %5$s[/zrl]'), $recip['channel_name'], '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', + $action, $itemlink, $item_post_type); @@ -231,12 +246,12 @@ class Enotify { $itemlink = $params['link']; - // ignore like/unlike activity on posts - they probably require a separate notification preference - if (array_key_exists('item',$params) && (! activity_match($params['item']['verb'],ACTIVITY_LIKE))) { - logger('notification: not a like activity. Ignoring.'); - pop_lang(); - return; + if(! $always_show_in_notices) { + logger('notification: not a visible activity. Ignoring.'); + pop_lang(); + return; + } } $parent_mid = $params['parent_mid']; @@ -496,8 +511,6 @@ class Enotify { // Another option would be to not add them to the DB, and change how emails are handled // (probably would be better that way) - $always_show_in_notices = get_pconfig($recip['channel_id'],'system','always_show_in_notices'); - if (!$always_show_in_notices) { if (($params['type'] == NOTIFY_WALL) || ($params['type'] == NOTIFY_MAIL) || ($params['type'] == NOTIFY_INTRO)) { $seen = 1; diff --git a/Zotlabs/Lib/Share.php b/Zotlabs/Lib/Share.php new file mode 100644 index 000000000..b5341e662 --- /dev/null +++ b/Zotlabs/Lib/Share.php @@ -0,0 +1,141 @@ +<?php + +namespace Zotlabs\Lib; + + +class Share { + + private $item = null; + + + public function __construct($post_id) { + + if(! $post_id) + return; + + if(! (local_channel() || remote_channel())) + return; + + $r = q("SELECT * from item left join xchan on author_xchan = xchan_hash WHERE id = %d LIMIT 1", + intval($post_id) + ); + if(! $r) + return; + + if(($r[0]['item_private']) && ($r[0]['xchan_network'] !== 'rss')) + return; + + $sql_extra = item_permissions_sql($r[0]['uid']); + + $r = q("select * from item where id = %d $sql_extra", + intval($post_id) + ); + if(! $r) + return; + + if($r[0]['mimetype'] !== 'text/bbcode') + return; + + /** @FIXME eventually we want to post remotely via rpost on your home site */ + // When that works remove this next bit: + + if(! local_channel()) + return; + + xchan_query($r); + + $this->item = $r[0]; + return; + } + + public function obj() { + $obj = []; + + if(! $this->item) + return $obj; + + $obj['type'] = $this->item['obj_type']; + $obj['id'] = $this->item['mid']; + $obj['content'] = $this->item['body']; + $obj['content_type'] = $this->item['mimetype']; + $obj['title'] = $this->item['title']; + $obj['created'] = $this->item['created']; + $obj['edited'] = $this->item['edited']; + $obj['author'] = [ + 'name' => $this->item['author']['xchan_name'], + 'address' => $this->item['author']['xchan_addr'], + 'network' => $this->item['author']['xchan_network'], + 'link' => [ + [ + 'rel' => 'alternate', + 'type' => 'text/html', + 'href' => $this->item['author']['xchan_url'] + ], + [ + 'rel' => 'photo', + 'type' => $this->item['author']['xchan_photo_mimetype'], + 'href' => $this->item['author']['xchan_photo_m'] + ] + ] + ]; + + $obj['owner'] = [ + 'name' => $this->item['owner']['xchan_name'], + 'address' => $this->item['owner']['xchan_addr'], + 'network' => $this->item['owner']['xchan_network'], + 'link' => [ + [ + 'rel' => 'alternate', + 'type' => 'text/html', + 'href' => $this->item['owner']['xchan_url'] + ], + [ + 'rel' => 'photo', + 'type' => $this->item['owner']['xchan_photo_mimetype'], + 'href' => $this->item['owner']['xchan_photo_m'] + ] + ] + ]; + + $obj['link'] = [ + 'rel' => 'alternate', + 'type' => 'text/html', + 'href' => $this->item['plink'] + ]; + + return $obj; + } + + public function bbcode() { + $bb = NULL_STR; + + if(! $this->item) + return $bb; + + $is_photo = (($this->item['obj_type'] === ACTIVITY_OBJ_PHOTO) ? true : false); + if($is_photo) { + $object = json_decode($this->item['obj'],true); + $photo_bb = $object['body']; + } + + if (strpos($this->item['body'], "[/share]") !== false) { + $pos = strpos($this->item['body'], "[share"); + $bb = substr($this->item['body'], $pos); + } else { + $bb = "[share author='".urlencode($this->item['author']['xchan_name']). + "' profile='".$this->item['author']['xchan_url'] . + "' avatar='".$this->item['author']['xchan_photo_s']. + "' link='".$this->item['plink']. + "' posted='".$this->item['created']. + "' message_id='".$this->item['mid']."']"; + if($this->item['title']) + $bb .= '[b]'.$this->item['title'].'[/b]'."\r\n"; + $bb .= (($is_photo) ? $photo_bb . "\r\n" . $this->item['body'] : $this->item['body']); + $bb .= "[/share]"; + } + + return $bb; + + } + +}
\ No newline at end of file diff --git a/Zotlabs/Module/Admin/Dbsync.php b/Zotlabs/Module/Admin/Dbsync.php index cff8a2484..469af2aa5 100644 --- a/Zotlabs/Module/Admin/Dbsync.php +++ b/Zotlabs/Module/Admin/Dbsync.php @@ -7,36 +7,38 @@ namespace Zotlabs\Module\Admin; class Dbsync { - - function get() { $o = ''; if(argc() > 3 && intval(argv(3)) && argv(2) === 'mark') { - set_config('database', 'update_r' . intval(argv(3)), 'success'); - if(intval(get_config('system','db_version')) <= intval(argv(3))) - set_config('system','db_version',intval(argv(3)) + 1); + // remove the old style config if it exists + del_config('database', 'update_r' . intval(argv(3))); + set_config('database', '_' . intval(argv(3)), 'success'); + if(intval(get_config('system','db_version')) < intval(argv(3))) + set_config('system','db_version',intval(argv(3))); info( t('Update has been marked successful') . EOL); goaway(z_root() . '/admin/dbsync'); } if(argc() > 2 && intval(argv(2))) { - require_once('install/update.php'); - $func = 'update_r' . intval(argv(2)); - if(function_exists($func)) { - $retval = $func(); + $x = intval(argv(2)); + $s = '_' . $x; + $cls = '\\Zotlabs\Update\\' . $s ; + if(class_exists($cls)) { + $c = new $cls(); + $retval = $c->run(); if($retval === UPDATE_FAILED) { - $o .= sprintf( t('Executing %s failed. Check system logs.'), $func); + $o .= sprintf( t('Executing %s failed. Check system logs.'), $s); } elseif($retval === UPDATE_SUCCESS) { - $o .= sprintf( t('Update %s was successfully applied.'), $func); - set_config('database',$func, 'success'); + $o .= sprintf( t('Update %s was successfully applied.'), $s); + set_config('database',$s, 'success'); } else - $o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $func); + $o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $s); } else - $o .= sprintf( t('Update function %s could not be found.'), $func); + $o .= sprintf( t('Update function %s could not be found.'), $s); return $o; } @@ -45,23 +47,25 @@ class Dbsync { $r = q("select * from config where cat = 'database' "); if(count($r)) { foreach($r as $rr) { - $upd = intval(substr($rr['k'],8)); + $upd = intval(substr($rr['k'],-4)); if($rr['v'] === 'success') continue; $failed[] = $upd; } } - if(! count($failed)) - return '<div class="generic-content-wrapper-styled"><h3>' . t('No failed updates.') . '</h3></div>'; - - $o = replace_macros(get_markup_template('failed_updates.tpl'),array( - '$base' => z_root(), - '$banner' => t('Failed Updates'), - '$desc' => '', - '$mark' => t('Mark success (if update was manually applied)'), - '$apply' => t('Attempt to execute this update step automatically'), - '$failed' => $failed + if(count($failed)) { + $o = replace_macros(get_markup_template('failed_updates.tpl'),array( + '$base' => z_root(), + '$banner' => t('Failed Updates'), + '$desc' => '', + '$mark' => t('Mark success (if update was manually applied)'), + '$apply' => t('Attempt to execute this update step automatically'), + '$failed' => $failed )); + } + else { + return '<div class="generic-content-wrapper-styled"><h3>' . t('No failed updates.') . '</h3></div>'; + } return $o; } diff --git a/Zotlabs/Module/Admin/Security.php b/Zotlabs/Module/Admin/Security.php index a1e4bf537..49e1ccf42 100644 --- a/Zotlabs/Module/Admin/Security.php +++ b/Zotlabs/Module/Admin/Security.php @@ -52,24 +52,24 @@ class Security { function get() { $whitesites = get_config('system','whitelisted_sites'); - $whitesites_str = ((is_array($whitesites)) ? implode($whitesites,"\n") : ''); + $whitesites_str = ((is_array($whitesites)) ? implode("\n",$whitesites) : ''); $blacksites = get_config('system','blacklisted_sites'); - $blacksites_str = ((is_array($blacksites)) ? implode($blacksites,"\n") : ''); + $blacksites_str = ((is_array($blacksites)) ? implode("\n",$blacksites) : ''); $whitechannels = get_config('system','whitelisted_channels'); - $whitechannels_str = ((is_array($whitechannels)) ? implode($whitechannels,"\n") : ''); + $whitechannels_str = ((is_array($whitechannels)) ? implode("\n",$whitechannels) : ''); $blackchannels = get_config('system','blacklisted_channels'); - $blackchannels_str = ((is_array($blackchannels)) ? implode($blackchannels,"\n") : ''); + $blackchannels_str = ((is_array($blackchannels)) ? implode("\n",$blackchannels) : ''); $whiteembeds = get_config('system','embed_allow'); - $whiteembeds_str = ((is_array($whiteembeds)) ? implode($whiteembeds,"\n") : ''); + $whiteembeds_str = ((is_array($whiteembeds)) ? implode("\n",$whiteembeds) : ''); $blackembeds = get_config('system','embed_deny'); - $blackembeds_str = ((is_array($blackembeds)) ? implode($blackembeds,"\n") : ''); + $blackembeds_str = ((is_array($blackembeds)) ? implode("\n",$blackembeds) : ''); $embed_coop = intval(get_config('system','embed_coop')); diff --git a/Zotlabs/Module/Admin/Site.php b/Zotlabs/Module/Admin/Site.php index 52b36e03e..ca181d5f8 100644 --- a/Zotlabs/Module/Admin/Site.php +++ b/Zotlabs/Module/Admin/Site.php @@ -45,6 +45,7 @@ class Site { $force_publish = ((x($_POST,'publish_all')) ? True : False); $disable_discover_tab = ((x($_POST,'disable_discover_tab')) ? False : True); $site_firehose = ((x($_POST,'site_firehose')) ? True : False); + $open_pubstream = ((x($_POST,'open_pubstream')) ? True : False); $login_on_homepage = ((x($_POST,'login_on_homepage')) ? True : False); $enable_context_help = ((x($_POST,'enable_context_help')) ? True : False); $global_directory = ((x($_POST,'directory_submit_url')) ? notags(trim($_POST['directory_submit_url'])) : ''); @@ -139,6 +140,7 @@ class Site { set_config('system','publish_all', $force_publish); set_config('system','disable_discover_tab', $disable_discover_tab); set_config('system','site_firehose', $site_firehose); + set_config('system','open_pubstream', $open_pubstream); set_config('system','force_queue_threshold', $force_queue); if ($global_directory == '') { del_config('system', 'directory_submit_url'); @@ -319,7 +321,7 @@ class Site { '$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory.")), '$disable_discover_tab' => array('disable_discover_tab', t('Import Public Streams'), $discover_tab, t('Import and allow access to public content pulled from other sites. Warning: this content is unmoderated.')), '$site_firehose' => array('site_firehose', t('Site only Public Streams'), get_config('system','site_firehose'), t('Allow access to public content originating only from this site if Imported Public Streams are disabled.')), - + '$open_pubstream' => array('open_pubstream', t('Allow anybody on the internet to access the Public streams'), get_config('system','open_pubstream',1), t('Disable to require authentication before viewing. Warning: this content is unmoderated.')), '$login_on_homepage' => array('login_on_homepage', t("Login on Homepage"),((intval($homelogin) || $homelogin === false) ? 1 : '') , t("Present a login box to visitors on the home page if no other content has been configured.")), '$enable_context_help' => array('enable_context_help', t("Enable context help"),((intval($enable_context_help) === 1 || $enable_context_help === false) ? 1 : 0) , t("Display contextual help for the current page when the help button is pressed.")), diff --git a/Zotlabs/Module/Authorize.php b/Zotlabs/Module/Authorize.php index 06f66c456..254700b4e 100644 --- a/Zotlabs/Module/Authorize.php +++ b/Zotlabs/Module/Authorize.php @@ -2,70 +2,66 @@ namespace Zotlabs\Module; - -class Authorize extends \Zotlabs\Web\Controller { +use Zotlabs\Identity\OAuth2Storage; - function get() { +class Authorize extends \Zotlabs\Web\Controller { + function init() { - // workaround for HTTP-auth in CGI mode - if (x($_SERVER, 'REDIRECT_REMOTE_USER')) { - $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ; - if(strlen($userpass)) { - list($name, $password) = explode(':', $userpass); - $_SERVER['PHP_AUTH_USER'] = $name; - $_SERVER['PHP_AUTH_PW'] = $password; - } + // workaround for HTTP-auth in CGI mode + if (x($_SERVER, 'REDIRECT_REMOTE_USER')) { + $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ; + if(strlen($userpass)) { + list($name, $password) = explode(':', $userpass); + $_SERVER['PHP_AUTH_USER'] = $name; + $_SERVER['PHP_AUTH_PW'] = $password; } - - if (x($_SERVER, 'HTTP_AUTHORIZATION')) { - $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ; - if(strlen($userpass)) { - list($name, $password) = explode(':', $userpass); - $_SERVER['PHP_AUTH_USER'] = $name; - $_SERVER['PHP_AUTH_PW'] = $password; - } + } + + if (x($_SERVER, 'HTTP_AUTHORIZATION')) { + $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ; + if(strlen($userpass)) { + list($name, $password) = explode(':', $userpass); + $_SERVER['PHP_AUTH_USER'] = $name; + $_SERVER['PHP_AUTH_PW'] = $password; } + } + $s = new \Zotlabs\Identity\OAuth2Server(new OAuth2Storage(\DBA::$dba->db)); + $request = \OAuth2\Request::createFromGlobals(); + $response = new \OAuth2\Response(); + // validate the authorize request + if (! $s->validateAuthorizeRequest($request, $response)) { + $response->send(); + killme(); + } - require_once('include/oauth2.php'); - - $request = \OAuth2\Request::createFromGlobals(); - $response = new \OAuth2\Response(); - - // validate the authorize request - if (! $oauth2_server->validateAuthorizeRequest($request, $response)) { - $response->send(); - killme(); - } - - // display an authorization form - if (empty($_POST)) { + // display an authorization form + if (empty($_POST)) { - return ' + return ' <form method="post"> <label>Do You Authorize TestClient?</label><br /> <input type="submit" name="authorized" value="yes"> <input type="submit" name="authorized" value="no"> </form>'; + } + + // print the authorization code if the user has authorized your client + $is_authorized = ($_POST['authorized'] === 'yes'); + $s->handleAuthorizeRequest($request, $response, $is_authorized, local_channel()); + if ($is_authorized) { + // this is only here so that you get to see your code in the cURL request. Otherwise, + // we'd redirect back to the client + $code = substr($response->getHttpHeader('Location'), strpos($response->getHttpHeader('Location'), 'code=')+5, 40); + echo("SUCCESS! Authorization Code: $code"); + } + + $response->send(); + killme(); } - // print the authorization code if the user has authorized your client - $is_authorized = ($_POST['authorized'] === 'yes'); - $oauth2_server->handleAuthorizeRequest($request, $response, $is_authorized); - if ($is_authorized) { - // this is only here so that you get to see your code in the cURL request. Otherwise, - // we'd redirect back to the client - $code = substr($response->getHttpHeader('Location'), strpos($response->getHttpHeader('Location'), 'code=')+5, 40); - echo("SUCCESS! Authorization Code: $code"); - - } - - $response->send(); - killme(); - } - -}
\ No newline at end of file +} diff --git a/Zotlabs/Module/Cards.php b/Zotlabs/Module/Cards.php index 8eff6c80d..f87988183 100644 --- a/Zotlabs/Module/Cards.php +++ b/Zotlabs/Module/Cards.php @@ -143,7 +143,7 @@ class Cards extends \Zotlabs\Web\Controller { } $r = q("select * from item - where item.uid = %d and item_type = %d + where uid = %d and item_type = %d $sql_extra order by item.created desc", intval($owner), intval(ITEM_TYPE_CARD) diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php index 7c4c900a1..231146999 100644 --- a/Zotlabs/Module/Channel.php +++ b/Zotlabs/Module/Channel.php @@ -204,7 +204,7 @@ class Channel extends \Zotlabs\Web\Controller { $_SESSION['loadtime'] = datetime_convert(); } else { - $r = q("SELECT distinct parent AS item_id, created from item + $r = q("SELECT distinct parent AS item_id from item left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids ) WHERE uid = %d $item_normal_update AND item_wall = 1 $simple_update @@ -239,7 +239,7 @@ class Channel extends \Zotlabs\Web\Controller { if($load || ($checkjs->disabled())) { if($mid) { - $r = q("SELECT distinct parent AS item_id from item where mid like '%s' and uid = %d $item_normal + $r = q("SELECT parent AS item_id from item where mid like '%s' and uid = %d $item_normal AND item_wall = 1 $sql_extra limit 1", dbesc($mid . '%'), intval(\App::$profile['profile_uid']) @@ -249,11 +249,11 @@ class Channel extends \Zotlabs\Web\Controller { } } else { - $r = q("SELECT distinct id AS item_id, created FROM item - left join abook on item.author_xchan = abook.abook_xchan - WHERE uid = %d $item_normal - AND item_wall = 1 and item_thread_top = 1 - AND (abook_blocked = 0 or abook.abook_flags is null) + $r = q("SELECT item.parent AS item_id FROM item + left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids ) + WHERE true and item.uid = %d AND item.item_thread_top = 1 $item_normal + AND (abook.abook_blocked = 0 or abook.abook_flags is null) + AND item.item_wall = 1 $sql_extra $sql_extra2 ORDER BY created DESC $pager_sql ", intval(\App::$profile['profile_uid']) diff --git a/Zotlabs/Module/Connections.php b/Zotlabs/Module/Connections.php index f42ff9b84..255731c9c 100644 --- a/Zotlabs/Module/Connections.php +++ b/Zotlabs/Module/Connections.php @@ -232,7 +232,7 @@ class Connections extends \Zotlabs\Web\Controller { if($rr['xchan_url']) { if(($rr['vcard']) && is_array($rr['vcard']['tels']) && $rr['vcard']['tels'][0]['nr']) - $phone = ((\App::$is_mobile || \App::$is_tablet) ? $rr['vcard']['tels'][0]['nr'] : ''); + $phone = $rr['vcard']['tels'][0]['nr']; else $phone = ''; diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php index e23a751d9..f359175c1 100644 --- a/Zotlabs/Module/Connedit.php +++ b/Zotlabs/Module/Connedit.php @@ -895,7 +895,6 @@ class Connedit extends \Zotlabs\Web\Controller { '$permnote_self' => t('Some permissions may be inherited from your channel\'s <a href="settings"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes.'), '$lastupdtext' => t('Last update:'), '$last_update' => relative_date($contact['abook_connected']), - '$is_mobile' => ((\App::$is_mobile || \App::$is_tablet) ? true : false), '$profile_select' => contact_profile_assign($contact['abook_profile']), '$multiprofs' => $multiprofs, '$contact_id' => $contact['abook_id'], diff --git a/Zotlabs/Module/Defperms.php b/Zotlabs/Module/Defperms.php index 422333a50..97d9cfd1d 100644 --- a/Zotlabs/Module/Defperms.php +++ b/Zotlabs/Module/Defperms.php @@ -22,7 +22,7 @@ class Defperms extends \Zotlabs\Web\Controller { $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook_xchan = xchan_hash - WHERE abook_self = 1 and abook_id = %d LIMIT 1", + WHERE abook_self = 1 and abook_channel = %d LIMIT 1", intval(local_channel()) ); if($r) { diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php index c46695b65..baeba82e8 100644 --- a/Zotlabs/Module/Hq.php +++ b/Zotlabs/Module/Hq.php @@ -51,10 +51,8 @@ class Hq extends \Zotlabs\Web\Controller { $item_normal = item_normal(); $item_normal_update = item_normal_update(); - $use_index = db_use_index('created'); - if(! $item_hash) { - $r = q("SELECT mid FROM item $use_index + $r = q("SELECT mid FROM item WHERE uid = %d $item_normal AND mid = parent_mid ORDER BY created DESC LIMIT 1", diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index db2d64d70..3f857030b 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -39,6 +39,7 @@ class Item extends \Zotlabs\Web\Controller { $uid = local_channel(); $channel = null; $observer = null; + $datarray = []; /** @@ -619,6 +620,21 @@ class Item extends \Zotlabs\Web\Controller { $i++; } } + + + if(preg_match_all('/(\[share=(.*?)\](.*?)\[\/share\])/',$body,$match)) { + // process share by id + + $verb = ACTIVITY_SHARE; + $i = 0; + foreach($match[2] as $mtch) { + $reshare = new \Zotlabs\Lib\Share($mtch); + $datarray['obj'] = $reshare->obj(); + $datarray['obj_type'] = $datarray['obj']['type']; + $body = str_replace($match[1][$i],$reshare->bbcode(),$body); + $i++; + } + } } @@ -720,7 +736,6 @@ class Item extends \Zotlabs\Web\Controller { if(!$thr_parent) $thr_parent = $mid; - $datarray = array(); $item_thread_top = ((! $parent) ? 1 : 0); diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php index 551303984..6e961dc36 100644 --- a/Zotlabs/Module/Network.php +++ b/Zotlabs/Module/Network.php @@ -144,7 +144,7 @@ class Network extends \Zotlabs\Web\Controller { // NOTREACHED } if($_GET['pf'] === '1') - $deftag = '@' . t('forum') . '+' . intval($cid) . '+'; + $deftag = '!' . t('forum') . '+' . intval($cid); else $def_acl = [ 'allow_cid' => '<' . $r[0]['abook_xchan'] . '>', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ]; } @@ -209,8 +209,11 @@ class Network extends \Zotlabs\Web\Controller { : ''); $sql_nets = ''; + + $distinct = ''; + $item_thread_top = ' AND item_thread_top = 1 '; - $sql_extra = " AND item.parent IN ( SELECT parent FROM item WHERE item_thread_top = 1 $sql_options ) "; + $sql_extra = $sql_options; if($group) { $contact_str = ''; @@ -226,7 +229,8 @@ class Network extends \Zotlabs\Web\Controller { $contact_str = ' 0 '; info( t('Privacy group is empty')); } - + $distinct = ' distinct '; + $item_thread_top = ''; $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND (( author_xchan IN ( $contact_str ) OR owner_xchan in ( $contact_str )) or allow_gid like '" . protect_sprintf('%<' . dbesc($group_hash) . '>%') . "' ) and id = parent $item_normal ) "; $x = group_rec_byhash(local_channel(), $group_hash); @@ -250,6 +254,8 @@ class Network extends \Zotlabs\Web\Controller { intval(local_channel()) ); if($r) { + $distinct = ' distinct '; + $item_thread_top = ''; $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($r[0]['abook_xchan']) . "' or owner_xchan = '" . dbesc($r[0]['abook_xchan']) . "' ) $item_normal ) "; $title = replace_macros(get_markup_template("section_title.tpl"),array( '$title' => '<a href="' . zid($r[0]['xchan_url']) . '" ><img src="' . zid($r[0]['xchan_photo_s']) . '" alt="' . urlencode($r[0]['xchan_name']) . '" /></a> <a href="' . zid($r[0]['xchan_url']) . '" >' . $r[0]['xchan_name'] . '</a>' @@ -264,13 +270,15 @@ class Network extends \Zotlabs\Web\Controller { } } elseif($xchan) { - $r = q("select * from xchan where xchan_hash = '%s'", - dbesc($xchan) - ); - if($r) { - $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($xchan) . "' or owner_xchan = '" . dbesc($xchan) . "' ) $item_normal ) "; - $title = replace_macros(get_markup_template("section_title.tpl"),array( - '$title' => '<a href="' . zid($r[0]['xchan_url']) . '" ><img src="' . zid($r[0]['xchan_photo_s']) . '" alt="' . urlencode($r[0]['xchan_name']) . '" /></a> <a href="' . zid($r[0]['xchan_url']) . '" >' . $r[0]['xchan_name'] . '</a>' + $r = q("select * from xchan where xchan_hash = '%s'", + dbesc($xchan) + ); + if($r) { + $distinct = ' distinct '; + $item_thread_top = ''; + $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($xchan) . "' or owner_xchan = '" . dbesc($xchan) . "' ) $item_normal ) "; + $title = replace_macros(get_markup_template("section_title.tpl"),array( + '$title' => '<a href="' . zid($r[0]['xchan_url']) . '" ><img src="' . zid($r[0]['xchan_photo_s']) . '" alt="' . urlencode($r[0]['xchan_name']) . '" /></a> <a href="' . zid($r[0]['xchan_url']) . '" >' . $r[0]['xchan_name'] . '</a>' )); $o = $tabs; $o .= $title; @@ -373,6 +381,8 @@ class Network extends \Zotlabs\Web\Controller { } if($conv) { + $distinct = ' distinct '; + $item_thread_top = ''; $sql_extra .= sprintf(" AND parent IN (SELECT distinct(parent) from item where ( author_xchan like '%s' or item_mentionsme = 1 )) ", dbesc(protect_sprintf($channel['channel_hash'])) ); @@ -448,7 +458,7 @@ class Network extends \Zotlabs\Web\Controller { if($nouveau && $load) { // "New Item View" - show all items unthreaded in reverse created date order - $items = q("SELECT item.*, item.id AS item_id, received FROM item + $items = q("SELECT item.*, item.id AS item_id, received FROM item left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids ) $net_query WHERE true $uids $item_normal @@ -477,11 +487,11 @@ class Network extends \Zotlabs\Web\Controller { if($load) { // Fetch a page full of parent items for this page - $r = q("SELECT distinct item.id AS item_id, $ordering FROM item + $r = q("SELECT $distinct item.parent AS item_id FROM item left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids ) $net_query - WHERE true $uids $item_normal - AND item.parent = item.id + WHERE true $uids $item_thread_top $item_normal + AND item.mid = item.parent_mid and (abook.abook_blocked = 0 or abook.abook_flags is null) $sql_extra3 $sql_extra $sql_nets $net_query2 diff --git a/Zotlabs/Module/New_channel.php b/Zotlabs/Module/New_channel.php index 9f2fea802..548f28c4f 100644 --- a/Zotlabs/Module/New_channel.php +++ b/Zotlabs/Module/New_channel.php @@ -142,6 +142,7 @@ class New_channel extends \Zotlabs\Web\Controller { '$role' => $role, '$default_role' => $default_role, '$nickname' => $nickname, + '$validate' => t('Validate'), '$submit' => t('Create'), '$channel_usage_message' => $channel_usage_message )); diff --git a/Zotlabs/Module/Ping.php b/Zotlabs/Module/Ping.php index f8399d871..eab49d69e 100644 --- a/Zotlabs/Module/Ping.php +++ b/Zotlabs/Module/Ping.php @@ -148,14 +148,12 @@ class Ping extends \Zotlabs\Web\Controller { $pubs = q("SELECT count(id) as total from item WHERE uid = %d - AND author_xchan != '%s' - AND obj_type != '%s' AND item_unseen = 1 + AND author_xchan != '%s' AND created > '" . datetime_convert('UTC','UTC',$_SESSION['static_loadtime']) . "' $item_normal", intval($sys['channel_id']), - dbesc(get_observer_hash()), - dbesc(ACTIVITY_OBJ_FILE) + dbesc(get_observer_hash()) ); if($pubs) @@ -168,8 +166,8 @@ class Ping extends \Zotlabs\Web\Controller { $r = q("SELECT * FROM item WHERE uid = %d - AND author_xchan != '%s' AND item_unseen = 1 + AND author_xchan != '%s' AND created > '" . datetime_convert('UTC','UTC',$_SESSION['static_loadtime']) . "' $item_normal ORDER BY created DESC @@ -210,22 +208,22 @@ class Ping extends \Zotlabs\Web\Controller { if(x($_REQUEST, 'markRead') && local_channel()) { switch($_REQUEST['markRead']) { case 'network': - $r = q("update item set item_unseen = 0 where item_unseen = 1 and uid = %d", + $r = q("UPDATE item SET item_unseen = 0 WHERE uid = %d AND item_unseen = 1", intval(local_channel()) ); break; case 'home': - $r = q("update item set item_unseen = 0 where item_unseen = 1 and item_wall = 1 and uid = %d", + $r = q("UPDATE item SET item_unseen = 0 WHERE uid = %d AND item_unseen = 1 AND item_wall = 1", intval(local_channel()) ); break; case 'mail': - $r = q("update mail set mail_seen = 1 where mail_seen = 0 and channel_id = %d ", + $r = q("UPDATE mail SET mail_seen = 1 WHERE channel_id = %d AND mail_seen = 0", intval(local_channel()) ); break; case 'all_events': - $r = q("update event set dismissed = 1 where dismissed = 0 and uid = %d AND dtstart < '%s' AND dtstart > '%s' ", + $r = q("UPDATE event SET dismissed = 1 WHERE uid = %d AND dismissed = 0 AND dtstart < '%s' AND dtstart > '%s' ", intval(local_channel()), dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')), dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days')) @@ -245,9 +243,9 @@ class Ping extends \Zotlabs\Web\Controller { } if(x($_REQUEST, 'markItemRead') && local_channel()) { - $r = q("update item set item_unseen = 0 where parent = %d and uid = %d", - intval($_REQUEST['markItemRead']), - intval(local_channel()) + $r = q("UPDATE item SET item_unseen = 0 WHERE uid = %d AND parent = %d", + intval(local_channel()), + intval($_REQUEST['markItemRead']) ); } @@ -256,7 +254,7 @@ class Ping extends \Zotlabs\Web\Controller { * dropdown menu. */ if(argc() > 1 && argv(1) === 'notify') { - $t = q("select * from notify where uid = %d and seen = 0 order by created desc", + $t = q("SELECT * FROM notify WHERE uid = %d AND seen = 0 ORDER BY CREATED DESC", intval(local_channel()) ); @@ -270,7 +268,18 @@ class Ping extends \Zotlabs\Web\Controller { $mid = basename($tt['link']); - $b64mid = ((strpos($mid, 'b64.' === 0)) ? $mid : 'b64.' . base64url_encode($mid)); + if(in_array($tt['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) { + // we need the thread parent + $r = q("select thr_parent from item where mid = '%s' and uid = %d limit 1", + dbesc($mid), + intval(local_channel()) + ); + + $b64mid = ((strpos($r[0]['thr_parent'], 'b64.' === 0)) ? $r[0]['thr_parent'] : 'b64.' . base64url_encode($r[0]['thr_parent'])); + } + else { + $b64mid = ((strpos($mid, 'b64.' === 0)) ? $mid : 'b64.' . base64url_encode($mid)); + } $notifs[] = array( 'notify_link' => z_root() . '/notify/view/' . $tt['id'], @@ -320,12 +329,13 @@ class Ping extends \Zotlabs\Web\Controller { if(argc() > 1 && (argv(1) === 'network' || argv(1) === 'home')) { $result = array(); - $use_index = db_use_index('uid_item_unseen'); - - $r = q("SELECT * FROM item $use_index - WHERE item_unseen = 1 and uid = %d $item_normal + $r = q("SELECT * FROM item + WHERE uid = %d + AND item_unseen = 1 AND author_xchan != '%s' - ORDER BY created DESC limit 300", + $item_normal + ORDER BY created DESC + LIMIT 300", intval(local_channel()), dbesc($ob_hash) ); @@ -495,10 +505,8 @@ class Ping extends \Zotlabs\Web\Controller { if($vnotify & (VNOTIFY_NETWORK|VNOTIFY_CHANNEL)) { - $use_index = db_use_index('uid_item_unseen'); - - $r = q("SELECT id, item_wall FROM item $use_index - WHERE item_unseen = 1 and uid = %d + $r = q("SELECT id, item_wall FROM item + WHERE uid = %d and item_unseen = 1 $item_normal AND author_xchan != '%s'", intval(local_channel()), diff --git a/Zotlabs/Module/Pubstream.php b/Zotlabs/Module/Pubstream.php index 2c25e2ce0..af7bc7658 100644 --- a/Zotlabs/Module/Pubstream.php +++ b/Zotlabs/Module/Pubstream.php @@ -12,11 +12,10 @@ class Pubstream extends \Zotlabs\Web\Controller { if($load) $_SESSION['loadtime'] = datetime_convert(); - - if(observer_prohibited(true)) { - return login(); + if((observer_prohibited(true)) || (! (intval(get_config('system','open_pubstream',1))) && get_observer_hash())) { + return login(); } - + $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false); $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true); @@ -167,7 +166,8 @@ class Pubstream extends \Zotlabs\Web\Controller { $net_query = (($net) ? " left join xchan on xchan_hash = author_xchan " : ''); $net_query2 = (($net) ? " and xchan_network = '" . protect_sprintf(dbesc($net)) . "' " : ''); - + + $abook_uids = " and abook.abook_channel = " . intval(\App::$profile['profile_uid']) . " "; $simple_update = (($_SESSION['loadtime']) ? " AND item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' " : ''); @@ -186,7 +186,7 @@ class Pubstream extends \Zotlabs\Web\Controller { if($load) { if($mid) { $r = q("SELECT parent AS item_id FROM item - left join abook on item.author_xchan = abook.abook_xchan + left join abook on item.author_xchan = abook.abook_xchan $net_query WHERE mid like '%s' $uids $item_normal and (abook.abook_blocked = 0 or abook.abook_flags is null) @@ -196,11 +196,10 @@ class Pubstream extends \Zotlabs\Web\Controller { } else { // Fetch a page full of parent items for this page - $r = q("SELECT distinct item.id AS item_id, $ordering FROM item - left join abook on item.author_xchan = abook.abook_xchan + $r = q("SELECT item.id AS item_id FROM item + left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids ) $net_query - WHERE true $uids $item_normal - AND item.parent = item.id + WHERE true $uids and item.item_thread_top = 1 $item_normal and (abook.abook_blocked = 0 or abook.abook_flags is null) $sql_extra3 $sql_extra $sql_nets $net_query2 ORDER BY $ordering DESC $pager_sql " diff --git a/Zotlabs/Module/Search.php b/Zotlabs/Module/Search.php index 4d35b59f3..55e0e746f 100644 --- a/Zotlabs/Module/Search.php +++ b/Zotlabs/Module/Search.php @@ -90,7 +90,7 @@ class Search extends \Zotlabs\Web\Controller { } else { $regstr = db_getfunc('REGEXP'); - $sql_extra = sprintf(" AND item.body $regstr '%s' ", dbesc(protect_sprintf(preg_quote($search)))); + $sql_extra = sprintf(" AND (item.title $regstr '%s' OR item.body $regstr '%s') ", dbesc(protect_sprintf(preg_quote($search))), dbesc(protect_sprintf(preg_quote($search)))); } // Here is the way permissions work in the search module... diff --git a/Zotlabs/Module/Settings/Channel.php b/Zotlabs/Module/Settings/Channel.php index 5e9e88a6d..fb8284d2e 100644 --- a/Zotlabs/Module/Settings/Channel.php +++ b/Zotlabs/Module/Settings/Channel.php @@ -331,22 +331,21 @@ class Channel { ); $limits = \Zotlabs\Access\PermissionLimits::Get(local_channel()); + $anon_comments = get_config('system','anonymous_comments',true); foreach($global_perms as $k => $perm) { $options = array(); + $can_be_public = ((strstr($k,'view') || ($k === 'post_comments' && $anon_comments)) ? true : false); foreach($perm_opts as $opt) { - if(((! strstr($k,'view')) && $k !== 'post_comments') && $opt[1] == PERMS_PUBLIC) + if($opt[1] == PERMS_PUBLIC && (! $can_be_public)) continue; $options[$opt[1]] = $opt[0]; } $permiss[] = array($k,$perm,$limits[$k],'',$options); } - - + // logger('permiss: ' . print_r($permiss,true)); - - $username = $channel['channel_name']; $nickname = $channel['channel_address']; $timezone = $channel['channel_timezone']; diff --git a/Zotlabs/Module/Settings/Display.php b/Zotlabs/Module/Settings/Display.php index e1ea0e3e5..340b3c0bb 100644 --- a/Zotlabs/Module/Settings/Display.php +++ b/Zotlabs/Module/Settings/Display.php @@ -21,7 +21,7 @@ class Display { if(! $theme) $theme = 'redbasic'; - $mobile_theme = ((x($_POST,'mobile_theme')) ? notags(trim($_POST['mobile_theme'])) : ''); + $preload_images = ((x($_POST,'preload_images')) ? intval($_POST['preload_images']) : 0); $channel_menu = ((x($_POST,'channel_menu')) ? intval($_POST['channel_menu']) : 0); $user_scalable = ((x($_POST,'user_scalable')) ? intval($_POST['user_scalable']) : 0); @@ -47,11 +47,6 @@ class Display { if($itemspage > 100) $itemspage = 100; - if ($mobile_theme == "---") - del_pconfig(local_channel(),'system','mobile_theme'); - else { - set_pconfig(local_channel(),'system','mobile_theme',$mobile_theme); - } set_pconfig(local_channel(),'system','preload_images',$preload_images); set_pconfig(local_channel(),'system','user_scalable',$user_scalable); @@ -114,10 +109,6 @@ class Display { $theme = (($existing_theme) ? $existing_theme : $default_theme); - $default_mobile_theme = get_config('system','mobile_theme'); - if(! $mobile_default_theme) - $mobile_default_theme = 'none'; - $allowed_themes_str = get_config('system','allowed_themes'); $allowed_themes_raw = explode(',',$allowed_themes_str); $allowed_themes = array(); @@ -135,26 +126,19 @@ class Display { $info = get_theme_info($th); $compatible = check_plugin_versions($info); - if(!$compatible) { - $mobile_themes[$f] = $themes[$f] = sprintf(t('%s - (Incompatible)'), $f); + if(! $compatible) { + $themes[$f] = sprintf(t('%s - (Incompatible)'), $f); continue; } $is_experimental = file_exists('view/theme/' . $th . '/experimental'); $unsupported = file_exists('view/theme/' . $th . '/unsupported'); - $is_mobile = file_exists('view/theme/' . $th . '/mobile'); $is_library = file_exists('view/theme/'. $th . '/library'); - $mobile_themes['---'] = t("No special theme for mobile devices"); if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){ $theme_name = (($is_experimental) ? sprintf(t('%s - (Experimental)'), $f) : $f); if (! $is_library) { - if($is_mobile) { - $mobile_themes[$f] = $themes[$f] = $theme_name . ' (' . t('mobile') . ')'; - } - else { - $mobile_themes[$f] = $themes[$f] = $theme_name; - } + $themes[$f] = $theme_name; } } } @@ -166,7 +150,6 @@ class Display { $theme_selected = explode(':', $theme_selected)[0]; } - $mobile_theme_selected = (!x($_SESSION,'mobile_theme')? $default_mobile_theme : $_SESSION['mobile_theme']); $preload_images = get_pconfig(local_channel(),'system','preload_images'); $preload_images = (($preload_images===false)? '0': $preload_images); // default if not set: 0 @@ -213,7 +196,6 @@ class Display { '$theme' => (($themes) ? array('theme', t('Display Theme:'), $theme_selected, '', $themes, 'preview') : false), '$schema' => array('schema', t('Select scheme'), $existing_schema, '' , $schemas), - '$mobile_theme' => (($mobile_themes) ? array('mobile_theme', t('Mobile Theme:'), $mobile_theme_selected, '', $mobile_themes, '') : false), '$preload_images' => array('preload_images', t("Preload images before rendering the page"), $preload_images, t("The subjective page load time will be longer but the page will be ready when displayed"), $yes_no), '$user_scalable' => array('user_scalable', t("Enable user zoom on mobile devices"), $user_scalable, '', $yes_no), '$ajaxint' => array('browser_update', t("Update browser every xx seconds"), $browser_update, t('Minimum of 10 seconds, no maximum')), diff --git a/Zotlabs/Module/Share.php b/Zotlabs/Module/Share.php index 5c4811c59..7f4d8b1eb 100644 --- a/Zotlabs/Module/Share.php +++ b/Zotlabs/Module/Share.php @@ -14,6 +14,10 @@ class Share extends \Zotlabs\Web\Controller { if(! $post_id) killme(); + + echo '[share=' . $post_id . '][/share]'; + killme(); + if(! (local_channel() || remote_channel())) killme(); diff --git a/Zotlabs/Module/Token.php b/Zotlabs/Module/Token.php index e0d9d74d7..f7c074233 100644 --- a/Zotlabs/Module/Token.php +++ b/Zotlabs/Module/Token.php @@ -2,39 +2,36 @@ namespace Zotlabs\Module; - -class Token extends \Zotlabs\Web\Controller { +use Zotlabs\Identity\OAuth2Storage; - function get() { +class Token extends \Zotlabs\Web\Controller { + function init() { - // workaround for HTTP-auth in CGI mode - if (x($_SERVER, 'REDIRECT_REMOTE_USER')) { - $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ; - if(strlen($userpass)) { - list($name, $password) = explode(':', $userpass); - $_SERVER['PHP_AUTH_USER'] = $name; - $_SERVER['PHP_AUTH_PW'] = $password; - } + // workaround for HTTP-auth in CGI mode + if (x($_SERVER, 'REDIRECT_REMOTE_USER')) { + $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ; + if(strlen($userpass)) { + list($name, $password) = explode(':', $userpass); + $_SERVER['PHP_AUTH_USER'] = $name; + $_SERVER['PHP_AUTH_PW'] = $password; } - - if (x($_SERVER, 'HTTP_AUTHORIZATION')) { - $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ; - if(strlen($userpass)) { - list($name, $password) = explode(':', $userpass); - $_SERVER['PHP_AUTH_USER'] = $name; - $_SERVER['PHP_AUTH_PW'] = $password; - } + } + + if (x($_SERVER, 'HTTP_AUTHORIZATION')) { + $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ; + if(strlen($userpass)) { + list($name, $password) = explode(':', $userpass); + $_SERVER['PHP_AUTH_USER'] = $name; + $_SERVER['PHP_AUTH_PW'] = $password; } + } + $s = new \Zotlabs\Identity\OAuth2Server(new OAuth2Storage(\DBA::$dba->db)); + $s->handleTokenRequest(\OAuth2\Request::createFromGlobals())->send(); - - - require_once('include/oauth2.php'); - $oauth2_server->handleTokenRequest(\OAuth2\Request::createFromGlobals())->send(); - - killme(); + killme(); } -}
\ No newline at end of file +} diff --git a/Zotlabs/Render/Theme.php b/Zotlabs/Render/Theme.php index 09cc7a4d4..0eebba1ba 100644 --- a/Zotlabs/Render/Theme.php +++ b/Zotlabs/Render/Theme.php @@ -8,10 +8,8 @@ use App; class Theme { static $system_theme = null; - static $system_mobile_theme = null; static $session_theme = null; - static $session_mobile_theme = null; /** * @brief Array with base or fallback themes. @@ -32,10 +30,6 @@ class Theme { ? \App::$config['system']['theme'] : ''); self::$session_theme = ((isset($_SESSION) && x($_SESSION, 'theme')) ? $_SESSION['theme'] : self::$system_theme); - self::$system_mobile_theme = ((isset(\App::$config['system']['mobile_theme'])) - ? \App::$config['system']['mobile_theme'] : ''); - self::$session_mobile_theme = ((isset($_SESSION) && x($_SESSION, 'mobile_theme')) - ? $_SESSION['mobile_theme'] : self::$system_mobile_theme); $page_theme = null; @@ -55,30 +49,12 @@ class Theme { if(array_key_exists('theme', \App::$layout) && \App::$layout['theme']) $page_theme = \App::$layout['theme']; - // If the viewer is on a mobile device, ensure that we're using a mobile - // theme of some kind or whatever the viewer's preference is for mobile - // viewing (if applicable) + $chosen_theme = self::$session_theme; - if(\App::$is_mobile || \App::$is_tablet) { - if(isset($_SESSION['show_mobile']) && (! $_SESSION['show_mobile'])) { - $chosen_theme = self::$session_theme; - } - else { - $chosen_theme = self::$session_mobile_theme; - - if($chosen_theme === '' || $chosen_theme === '---' ) { - // user has selected to have the mobile theme be the same as the normal one - $chosen_theme = self::$session_theme; - } - } + if($page_theme) { + $chosen_theme = $page_theme; } - else { - $chosen_theme = self::$session_theme; - if($page_theme) { - $chosen_theme = $page_theme; - } - } if(array_key_exists('theme_preview', $_GET)) $chosen_theme = $_GET['theme_preview']; diff --git a/Zotlabs/Update/_1000.php b/Zotlabs/Update/_1000.php new file mode 100644 index 000000000..02787db38 --- /dev/null +++ b/Zotlabs/Update/_1000.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1000 { +function run() { + $r = q("ALTER TABLE `channel` ADD `channel_a_delegate` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '0', ADD INDEX ( `channel_a_delegate` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1001.php b/Zotlabs/Update/_1001.php new file mode 100644 index 000000000..9acc96373 --- /dev/null +++ b/Zotlabs/Update/_1001.php @@ -0,0 +1,27 @@ +<?php + +namespace Zotlabs\Update; + +class _1001 { +function run() { + $r = q("CREATE TABLE if not exists `verify` ( + `id` INT(10) UNSIGNED NOT NULL , + `channel` INT(10) UNSIGNED NOT NULL DEFAULT '0', + `type` CHAR( 32 ) NOT NULL DEFAULT '', + `token` CHAR( 255 ) NOT NULL DEFAULT '', + `meta` CHAR( 255 ) NOT NULL DEFAULT '', + `created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', + PRIMARY KEY ( `id` ) + ) ENGINE = MYISAM DEFAULT CHARSET=utf8"); + + $r2 = q("alter table `verify` add index (`channel`), add index (`type`), add index (`token`), + add index (`meta`), add index (`created`)"); + + if($r && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1002.php b/Zotlabs/Update/_1002.php new file mode 100644 index 000000000..1f42449c6 --- /dev/null +++ b/Zotlabs/Update/_1002.php @@ -0,0 +1,20 @@ +<?php + +namespace Zotlabs\Update; + +class _1002 { +function run() { + $r = q("ALTER TABLE `event` CHANGE `account` `aid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r2 = q("alter table `event` drop index `account`, add index (`aid`)"); + + q("drop table contact"); + q("drop table deliverq"); + + if($r && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1003.php b/Zotlabs/Update/_1003.php new file mode 100644 index 000000000..18d99f985 --- /dev/null +++ b/Zotlabs/Update/_1003.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1003 { +function run() { + $r = q("ALTER TABLE `xchan` ADD `xchan_flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `xchan_network` , +ADD INDEX ( `xchan_flags` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1004.php b/Zotlabs/Update/_1004.php new file mode 100644 index 000000000..a86f5d824 --- /dev/null +++ b/Zotlabs/Update/_1004.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1004 { +function run() { + $r = q("CREATE TABLE if not exists `site` ( +`site_url` CHAR( 255 ) NOT NULL , +`site_flags` INT NOT NULL DEFAULT '0', +`site_update` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', +`site_directory` CHAR( 255 ) NOT NULL DEFAULT '', +PRIMARY KEY ( `site_url` ) +) ENGINE = MYISAM DEFAULT CHARSET=utf8"); + + $r2 = q("alter table site add index (site_flags), add index (site_update), add index (site_directory) "); + + if($r && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1005.php b/Zotlabs/Update/_1005.php new file mode 100644 index 000000000..ee8621a8d --- /dev/null +++ b/Zotlabs/Update/_1005.php @@ -0,0 +1,13 @@ +<?php + +namespace Zotlabs\Update; + +class _1005 { +function run() { + q("drop table guid"); + q("drop table `notify-threads`"); + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1006.php b/Zotlabs/Update/_1006.php new file mode 100644 index 000000000..43a2bb951 --- /dev/null +++ b/Zotlabs/Update/_1006.php @@ -0,0 +1,45 @@ +<?php + +namespace Zotlabs\Update; + +class _1006 { +function run() { + + $r = q("CREATE TABLE IF NOT EXISTS `xprof` ( + `xprof_hash` char(255) NOT NULL, + `xprof_desc` char(255) NOT NULL DEFAULT '', + `xprof_dob` char(12) NOT NULL DEFAULT '', + `xprof_gender` char(255) NOT NULL DEFAULT '', + `xprof_marital` char(255) NOT NULL DEFAULT '', + `xprof_sexual` char(255) NOT NULL DEFAULT '', + `xprof_locale` char(255) NOT NULL DEFAULT '', + `xprof_region` char(255) NOT NULL DEFAULT '', + `xprof_postcode` char(32) NOT NULL DEFAULT '', + `xprof_country` char(255) NOT NULL DEFAULT '', + PRIMARY KEY (`xprof_hash`), + KEY `xprof_desc` (`xprof_desc`), + KEY `xprof_dob` (`xprof_dob`), + KEY `xprof_gender` (`xprof_gender`), + KEY `xprof_marital` (`xprof_marital`), + KEY `xprof_sexual` (`xprof_sexual`), + KEY `xprof_locale` (`xprof_locale`), + KEY `xprof_region` (`xprof_region`), + KEY `xprof_postcode` (`xprof_postcode`), + KEY `xprof_country` (`xprof_country`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8"); + + $r2 = q("CREATE TABLE IF NOT EXISTS `xtag` ( + `xtag_hash` char(255) NOT NULL, + `xtag_term` char(255) NOT NULL DEFAULT '', + PRIMARY KEY (`xtag_hash`), + KEY `xtag_term` (`xtag_term`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8"); + + if($r && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1007.php b/Zotlabs/Update/_1007.php new file mode 100644 index 000000000..eb52c5bc5 --- /dev/null +++ b/Zotlabs/Update/_1007.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1007 { +function run() { + $r = q("ALTER TABLE `channel` ADD `channel_r_storage` INT UNSIGNED NOT NULL DEFAULT '128', ADD `channel_w_storage` INT UNSIGNED NOT NULL DEFAULT '128', add index ( channel_r_storage ), add index ( channel_w_storage )"); + + if($r && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1008.php b/Zotlabs/Update/_1008.php new file mode 100644 index 000000000..d5db24bc0 --- /dev/null +++ b/Zotlabs/Update/_1008.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1008 { +function run() { + $r = q("alter table profile drop prv_keywords, CHANGE `pub_keywords` `keywords` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, drop index pub_keywords"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1009.php b/Zotlabs/Update/_1009.php new file mode 100644 index 000000000..afb0d5e96 --- /dev/null +++ b/Zotlabs/Update/_1009.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1009 { +function run() { + $r = q("ALTER TABLE `xprof` ADD `xprof_keywords` TEXT NOT NULL"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1010.php b/Zotlabs/Update/_1010.php new file mode 100644 index 000000000..92405cce4 --- /dev/null +++ b/Zotlabs/Update/_1010.php @@ -0,0 +1,18 @@ +<?php + +namespace Zotlabs\Update; + +class _1010 { +function run() { + $r = q("ALTER TABLE `abook` ADD `abook_dob` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `abook_connnected` , +ADD INDEX ( `abook_dob` )"); + + $r2 = q("ALTER TABLE `profile` ADD `dob_tz` CHAR( 255 ) NOT NULL DEFAULT 'UTC' AFTER `dob`"); + + if($r && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1011.php b/Zotlabs/Update/_1011.php new file mode 100644 index 000000000..b6841a9fe --- /dev/null +++ b/Zotlabs/Update/_1011.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1011 { +function run() { + $r = q("ALTER TABLE `item` ADD `expires` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `edited` , +ADD INDEX ( `expires` )"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1012.php b/Zotlabs/Update/_1012.php new file mode 100644 index 000000000..3ae5caf65 --- /dev/null +++ b/Zotlabs/Update/_1012.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1012 { +function run() { + $r = q("ALTER TABLE `xchan` ADD `xchan_connurl` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_url` , +ADD INDEX ( `xchan_connurl` )"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1013.php b/Zotlabs/Update/_1013.php new file mode 100644 index 000000000..68fc9071d --- /dev/null +++ b/Zotlabs/Update/_1013.php @@ -0,0 +1,21 @@ +<?php + +namespace Zotlabs\Update; + +class _1013 { +function run() { + $r = q("CREATE TABLE if not exists `xlink` ( +`xlink_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`xlink_xchan` CHAR( 255 ) NOT NULL DEFAULT '', +`xlink_link` CHAR( 255 ) NOT NULL DEFAULT '', +`xlink_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' +) ENGINE = MYISAM DEFAULT CHARSET=utf8"); + + $r2 = q("alter table xlink add index ( xlink_xchan ), add index ( xlink_link ), add index ( xlink_updated ) "); + if($r && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1014.php b/Zotlabs/Update/_1014.php new file mode 100644 index 000000000..e9b3a89e0 --- /dev/null +++ b/Zotlabs/Update/_1014.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1014 { +function run() { + $r = q("ALTER TABLE `verify` CHANGE `id` `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1015.php b/Zotlabs/Update/_1015.php new file mode 100644 index 000000000..d9d2d2f27 --- /dev/null +++ b/Zotlabs/Update/_1015.php @@ -0,0 +1,19 @@ +<?php + +namespace Zotlabs\Update; + +class _1015 { +function run() { + $r = q("ALTER TABLE `channel` ADD `channel_r_pages` INT UNSIGNED NOT NULL DEFAULT '128', +ADD `channel_w_pages` INT UNSIGNED NOT NULL DEFAULT '128'"); + + $r2 = q("ALTER TABLE `channel` ADD INDEX ( `channel_r_pages` ) , ADD INDEX ( `channel_w_pages` ) "); + + if($r && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1016.php b/Zotlabs/Update/_1016.php new file mode 100644 index 000000000..93f71a474 --- /dev/null +++ b/Zotlabs/Update/_1016.php @@ -0,0 +1,39 @@ +<?php + +namespace Zotlabs\Update; + +class _1016 { +function run() { + + $r = q("CREATE TABLE IF NOT EXISTS `menu` ( + `menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `menu_channel_id` int(10) unsigned NOT NULL DEFAULT '0', + `menu_desc` char(255) NOT NULL DEFAULT '', + PRIMARY KEY (`menu_id`), + KEY `menu_channel_id` (`menu_channel_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + $r2 = q("CREATE TABLE IF NOT EXISTS `menu_item` ( + `mitem_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `mitem_link` char(255) NOT NULL DEFAULT '', + `mitem_desc` char(255) NOT NULL DEFAULT '', + `allow_cid` mediumtext NOT NULL, + `allow_gid` mediumtext NOT NULL, + `deny_cid` mediumtext NOT NULL, + `deny_gid` mediumtext NOT NULL, + `mitem_channel_id` int(10) unsigned NOT NULL, + `mitem_menu_id` int(10) unsigned NOT NULL DEFAULT '0', + `mitem_order` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`mitem_id`), + KEY `mitem_channel_id` (`mitem_channel_id`), + KEY `mitem_menu_id` (`mitem_menu_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + + if($r && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1017.php b/Zotlabs/Update/_1017.php new file mode 100644 index 000000000..429eda67b --- /dev/null +++ b/Zotlabs/Update/_1017.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1017 { +function run() { + $r = q("ALTER TABLE `event` CHANGE `cid` `event_xchan` CHAR( 255 ) NOT NULL DEFAULT '', ADD INDEX ( `event_xchan` ), drop index cid "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1018.php b/Zotlabs/Update/_1018.php new file mode 100644 index 000000000..546ebffca --- /dev/null +++ b/Zotlabs/Update/_1018.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1018 { +function run() { + $r = q("ALTER TABLE `event` ADD `event_hash` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `event_xchan` , +ADD INDEX ( `event_hash` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1019.php b/Zotlabs/Update/_1019.php new file mode 100644 index 000000000..a7103c98c --- /dev/null +++ b/Zotlabs/Update/_1019.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1019 { +function run() { + $r = q("ALTER TABLE `event` DROP `message_id` "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1020.php b/Zotlabs/Update/_1020.php new file mode 100644 index 000000000..c898f31c2 --- /dev/null +++ b/Zotlabs/Update/_1020.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1020 { +function run() { + $r = q("alter table photo drop `contact-id`, drop guid, drop index `resource-id`, add index ( `resource_id` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1021.php b/Zotlabs/Update/_1021.php new file mode 100644 index 000000000..72203fadb --- /dev/null +++ b/Zotlabs/Update/_1021.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1021 { +function run() { + + $r = q("ALTER TABLE `abook` CHANGE `abook_connnected` `abook_connected` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', + drop index `abook_connnected`, add index ( `abook_connected` ) "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1022.php b/Zotlabs/Update/_1022.php new file mode 100644 index 000000000..7e13250c4 --- /dev/null +++ b/Zotlabs/Update/_1022.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1022 { +function run() { + $r = q("alter table attach add index ( filename ), add index ( filetype ), add index ( filesize ), add index ( created ), add index ( edited ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1023.php b/Zotlabs/Update/_1023.php new file mode 100644 index 000000000..0a8dd2f00 --- /dev/null +++ b/Zotlabs/Update/_1023.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1023 { +function run() { + $r = q("ALTER TABLE `item` ADD `revision` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `lang` , add index ( revision ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1024.php b/Zotlabs/Update/_1024.php new file mode 100644 index 000000000..004d8967a --- /dev/null +++ b/Zotlabs/Update/_1024.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1024 { +function run() { + $r = q("ALTER TABLE `attach` ADD `revision` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `filesize` , +ADD INDEX ( `revision` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1025.php b/Zotlabs/Update/_1025.php new file mode 100644 index 000000000..d498233b3 --- /dev/null +++ b/Zotlabs/Update/_1025.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1025 { +function run() { + $r = q("ALTER TABLE `attach` ADD `folder` CHAR( 64 ) NOT NULL DEFAULT '' AFTER `revision` , +ADD `flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `folder` , add index ( folder ), add index ( flags )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1026.php b/Zotlabs/Update/_1026.php new file mode 100644 index 000000000..d57fdec37 --- /dev/null +++ b/Zotlabs/Update/_1026.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1026 { +function run() { + $r = q("ALTER TABLE `item` ADD `mimetype` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `author_xchan` , +ADD INDEX ( `mimetype` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1027.php b/Zotlabs/Update/_1027.php new file mode 100644 index 000000000..04d09d202 --- /dev/null +++ b/Zotlabs/Update/_1027.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1027 { +function run() { + $r = q("ALTER TABLE `abook` ADD `abook_rating` INT NOT NULL DEFAULT '0' AFTER `abook_closeness` , +ADD INDEX ( `abook_rating` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1028.php b/Zotlabs/Update/_1028.php new file mode 100644 index 000000000..a58784a01 --- /dev/null +++ b/Zotlabs/Update/_1028.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1028 { +function run() { + $r = q("ALTER TABLE `xlink` ADD `xlink_rating` INT NOT NULL DEFAULT '0' AFTER `xlink_link` , +ADD INDEX ( `xlink_rating` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1029.php b/Zotlabs/Update/_1029.php new file mode 100644 index 000000000..7072647cb --- /dev/null +++ b/Zotlabs/Update/_1029.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1029 { +function run() { + $r = q("ALTER TABLE `channel` ADD `channel_deleted` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_pageflags` , +ADD INDEX ( `channel_deleted` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1030.php b/Zotlabs/Update/_1030.php new file mode 100644 index 000000000..7aebde49e --- /dev/null +++ b/Zotlabs/Update/_1030.php @@ -0,0 +1,29 @@ +<?php + +namespace Zotlabs\Update; + +class _1030 { +function run() { + $r = q("CREATE TABLE IF NOT EXISTS `issue` ( +`issue_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`issue_created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', +`issue_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', +`issue_assigned` CHAR( 255 ) NOT NULL , +`issue_priority` INT NOT NULL , +`issue_status` INT NOT NULL , +`issue_component` CHAR( 255 ) NOT NULL, +KEY `issue_created` (`issue_created`), +KEY `issue_updated` (`issue_updated`), +KEY `issue_assigned` (`issue_assigned`), +KEY `issue_priority` (`issue_priority`), +KEY `issue_status` (`issue_status`), +KEY `issue_component` (`issue_component`) +) ENGINE = MYISAM DEFAULT CHARSET=utf8"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1031.php b/Zotlabs/Update/_1031.php new file mode 100644 index 000000000..4463c9e04 --- /dev/null +++ b/Zotlabs/Update/_1031.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1031 { +function run() { + $r = q("ALTER TABLE `account` ADD `account_external` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `account_email` , +ADD INDEX ( `account_external` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1032.php b/Zotlabs/Update/_1032.php new file mode 100644 index 000000000..a9fbeca9e --- /dev/null +++ b/Zotlabs/Update/_1032.php @@ -0,0 +1,21 @@ +<?php + +namespace Zotlabs\Update; + +class _1032 { +function run() { + $r = q("CREATE TABLE if not exists `xign` ( +`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`uid` INT NOT NULL DEFAULT '0', +`xchan` CHAR( 255 ) NOT NULL DEFAULT '', +KEY `uid` (`uid`), +KEY `xchan` (`xchan`) +) ENGINE = MYISAM DEFAULT CHARSET = utf8"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1033.php b/Zotlabs/Update/_1033.php new file mode 100644 index 000000000..a201e1d1f --- /dev/null +++ b/Zotlabs/Update/_1033.php @@ -0,0 +1,29 @@ +<?php + +namespace Zotlabs\Update; + +class _1033 { +function run() { + $r = q("CREATE TABLE if not exists `shares` ( +`share_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`share_type` INT NOT NULL DEFAULT '0', +`share_target` INT UNSIGNED NOT NULL DEFAULT '0', +`share_xchan` CHAR( 255 ) NOT NULL DEFAULT '', +KEY `share_type` (`share_type`), +KEY `share_target` (`share_target`), +KEY `share_xchan` (`share_xchan`) +) ENGINE = MYISAM DEFAULT CHARSET = utf8"); + + // if these fail don't bother reporting it + + q("drop table gcign"); + q("drop table gcontact"); + q("drop table glink"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1034.php b/Zotlabs/Update/_1034.php new file mode 100644 index 000000000..646182cc0 --- /dev/null +++ b/Zotlabs/Update/_1034.php @@ -0,0 +1,20 @@ +<?php + +namespace Zotlabs\Update; + +class _1034 { +function run() { + $r = q("CREATE TABLE if not exists `updates` ( +`ud_hash` CHAR( 128 ) NOT NULL , +`ud_date` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', +PRIMARY KEY ( `ud_hash` ), +KEY `ud_date` ( `ud_date` ) +) ENGINE = MYISAM DEFAULT CHARSET = utf8"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1035.php b/Zotlabs/Update/_1035.php new file mode 100644 index 000000000..44e95189d --- /dev/null +++ b/Zotlabs/Update/_1035.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1035 { +function run() { + $r = q("CREATE TABLE if not exists `xconfig` ( +`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`xchan` CHAR( 255 ) NOT NULL , +`cat` CHAR( 255 ) NOT NULL , +`k` CHAR( 255 ) NOT NULL , +`v` MEDIUMTEXT NOT NULL, +KEY `xchan` ( `xchan` ), +KEY `cat` ( `cat` ), +KEY `k` ( `k` ) +) ENGINE = MYISAM DEFAULT CHARSET = utf8"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1036.php b/Zotlabs/Update/_1036.php new file mode 100644 index 000000000..700a82e12 --- /dev/null +++ b/Zotlabs/Update/_1036.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1036 { +function run() { + $r = q("ALTER TABLE `profile` ADD `channels` TEXT NOT NULL AFTER `contact` "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1037.php b/Zotlabs/Update/_1037.php new file mode 100644 index 000000000..a1ad20aa8 --- /dev/null +++ b/Zotlabs/Update/_1037.php @@ -0,0 +1,30 @@ +<?php + +namespace Zotlabs\Update; + +class _1037 { +function run() { + $r1 = q("ALTER TABLE `item` CHANGE `uri` `mid` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '', +CHANGE `parent_uri` `parent_mid` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '', + DROP INDEX `uri` , +ADD INDEX `mid` ( `mid` ), +DROP INDEX `parent_uri` , +ADD INDEX `parent_mid` ( `parent_mid` ), + DROP INDEX `uid_uri` , +ADD INDEX `uid_mid` ( `mid` , `uid` ) "); + + $r2 = q("ALTER TABLE `mail` CHANGE `uri` `mid` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , +CHANGE `parent_uri` `parent_mid` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , +DROP INDEX `uri` , +ADD INDEX `mid` ( `mid` ), + DROP INDEX `parent_uri` , +ADD INDEX `parent_mid` ( `parent_mid` ) "); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1038.php b/Zotlabs/Update/_1038.php new file mode 100644 index 000000000..b4a86f41e --- /dev/null +++ b/Zotlabs/Update/_1038.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1038 { +function run() { + $r = q("ALTER TABLE `manage` CHANGE `mid` `xchan` CHAR( 255 ) NOT NULL DEFAULT '', drop index `mid`, ADD INDEX ( `xchan` )"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1039.php b/Zotlabs/Update/_1039.php new file mode 100644 index 000000000..9214cdc4a --- /dev/null +++ b/Zotlabs/Update/_1039.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1039 { +function run() { + $r = q("ALTER TABLE `channel` CHANGE `channel_default_gid` `channel_default_group` CHAR( 255 ) NOT NULL DEFAULT ''"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1040.php b/Zotlabs/Update/_1040.php new file mode 100644 index 000000000..77dc75a48 --- /dev/null +++ b/Zotlabs/Update/_1040.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1040 { +function run() { + $r1 = q("ALTER TABLE `session` CHANGE `expire` `expire` BIGINT UNSIGNED NOT NULL "); + $r2 = q("ALTER TABLE `tokens` CHANGE `expires` `expires` BIGINT UNSIGNED NOT NULL "); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1041.php b/Zotlabs/Update/_1041.php new file mode 100644 index 000000000..4ed436e61 --- /dev/null +++ b/Zotlabs/Update/_1041.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1041 { +function run() { + $r = q("ALTER TABLE `outq` ADD `outq_driver` CHAR( 32 ) NOT NULL DEFAULT '' AFTER `outq_channel` "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1042.php b/Zotlabs/Update/_1042.php new file mode 100644 index 000000000..56298b6a3 --- /dev/null +++ b/Zotlabs/Update/_1042.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1042 { +function run() { + $r = q("ALTER TABLE `hubloc` ADD `hubloc_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', +ADD `hubloc_connected` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( `hubloc_updated` ), ADD INDEX ( `hubloc_connected` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1043.php b/Zotlabs/Update/_1043.php new file mode 100644 index 000000000..b28203731 --- /dev/null +++ b/Zotlabs/Update/_1043.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1043 { +function run() { + $r = q("ALTER TABLE `item` ADD `comment_policy` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `coord` , +ADD INDEX ( `comment_policy` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1044.php b/Zotlabs/Update/_1044.php new file mode 100644 index 000000000..fc7e5438f --- /dev/null +++ b/Zotlabs/Update/_1044.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1044 { +function run() { + $r = q("ALTER TABLE `term` ADD `imgurl` CHAR( 255 ) NOT NULL , +ADD INDEX ( `imgurl` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1045.php b/Zotlabs/Update/_1045.php new file mode 100644 index 000000000..73570c316 --- /dev/null +++ b/Zotlabs/Update/_1045.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1045 { +function run() { + $r = q("ALTER TABLE `site` ADD `site_register` INT NOT NULL DEFAULT '0', +ADD INDEX ( `site_register` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1046.php b/Zotlabs/Update/_1046.php new file mode 100644 index 000000000..219d53e17 --- /dev/null +++ b/Zotlabs/Update/_1046.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1046 { +function run() { + $r = q("ALTER TABLE `term` ADD `term_hash` CHAR( 255 ) NOT NULL DEFAULT '', +ADD INDEX ( `term_hash` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1047.php b/Zotlabs/Update/_1047.php new file mode 100644 index 000000000..930c13eb8 --- /dev/null +++ b/Zotlabs/Update/_1047.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1047 { +function run() { + $r = q("ALTER TABLE `xprof` ADD `xprof_age` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `xprof_hash` , +ADD INDEX ( `xprof_age` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1048.php b/Zotlabs/Update/_1048.php new file mode 100644 index 000000000..20c8931d7 --- /dev/null +++ b/Zotlabs/Update/_1048.php @@ -0,0 +1,29 @@ +<?php + +namespace Zotlabs\Update; + +class _1048 { +function run() { + $r = q("CREATE TABLE IF NOT EXISTS `obj` ( + `obj_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `obj_page` char(64) NOT NULL DEFAULT '', + `obj_verb` char(255) NOT NULL DEFAULT '', + `obj_type` int(10) unsigned NOT NULL DEFAULT '0', + `obj_obj` char(255) NOT NULL DEFAULT '', + `obj_channel` int(10) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`obj_id`), + KEY `obj_verb` (`obj_verb`), + KEY `obj_page` (`obj_page`), + KEY `obj_type` (`obj_type`), + KEY `obj_channel` (`obj_channel`), + KEY `obj_obj` (`obj_obj`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1049.php b/Zotlabs/Update/_1049.php new file mode 100644 index 000000000..622847727 --- /dev/null +++ b/Zotlabs/Update/_1049.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1049 { +function run() { + $r = q("ALTER TABLE `term` ADD `parent_hash` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `term_hash` , ADD INDEX ( `parent_hash` ) "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1050.php b/Zotlabs/Update/_1050.php new file mode 100644 index 000000000..1939d346f --- /dev/null +++ b/Zotlabs/Update/_1050.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1050 { +function run() { + $r = q("ALTER TABLE `xtag` DROP PRIMARY KEY , ADD `xtag_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST , ADD INDEX ( `xtag_hash` ) "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1051.php b/Zotlabs/Update/_1051.php new file mode 100644 index 000000000..041b51f21 --- /dev/null +++ b/Zotlabs/Update/_1051.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1051 { +function run() { + $r = q("ALTER TABLE `photo` ADD `photo_flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `profile` , ADD INDEX ( `photo_flags` ) "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1052.php b/Zotlabs/Update/_1052.php new file mode 100644 index 000000000..05addf21f --- /dev/null +++ b/Zotlabs/Update/_1052.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1052 { +function run() { + $r = q("ALTER TABLE `channel` ADD UNIQUE (`channel_address`) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1053.php b/Zotlabs/Update/_1053.php new file mode 100644 index 000000000..4752dca62 --- /dev/null +++ b/Zotlabs/Update/_1053.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1053 { +function run() { + $r = q("ALTER TABLE `profile` ADD `chandesc` TEXT NOT NULL DEFAULT '' AFTER `pdesc` "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1054.php b/Zotlabs/Update/_1054.php new file mode 100644 index 000000000..f4fc2eb5b --- /dev/null +++ b/Zotlabs/Update/_1054.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1054 { +function run() { + $r = q("ALTER TABLE `item` CHANGE `title` `title` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1055.php b/Zotlabs/Update/_1055.php new file mode 100644 index 000000000..6b3a4c1d9 --- /dev/null +++ b/Zotlabs/Update/_1055.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1055 { +function run() { + $r = q("ALTER TABLE `mail` CHANGE `title` `title` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1056.php b/Zotlabs/Update/_1056.php new file mode 100644 index 000000000..6c0510f88 --- /dev/null +++ b/Zotlabs/Update/_1056.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1056 { +function run() { + $r = q("ALTER TABLE `xchan` ADD `xchan_instance_url` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_network` , +ADD INDEX ( `xchan_instance_url` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1057.php b/Zotlabs/Update/_1057.php new file mode 100644 index 000000000..081e82d1f --- /dev/null +++ b/Zotlabs/Update/_1057.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1057 { +function run() { + $r = q("drop table intro"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1058.php b/Zotlabs/Update/_1058.php new file mode 100644 index 000000000..8e3ffdd6a --- /dev/null +++ b/Zotlabs/Update/_1058.php @@ -0,0 +1,19 @@ +<?php + +namespace Zotlabs\Update; + +class _1058 { +function run() { + $r1 = q("ALTER TABLE `menu` ADD `menu_name` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `menu_channel_id` , +ADD INDEX ( `menu_name` ) "); + + $r2 = q("ALTER TABLE `menu_item` ADD `mitem_flags` INT NOT NULL DEFAULT '0' AFTER `mitem_desc` , +ADD INDEX ( `mitem_flags` ) "); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1059.php b/Zotlabs/Update/_1059.php new file mode 100644 index 000000000..e035efb2c --- /dev/null +++ b/Zotlabs/Update/_1059.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1059 { +function run() { + $r = q("ALTER TABLE `mail` ADD `attach` MEDIUMTEXT NOT NULL DEFAULT '' AFTER `body` "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1060.php b/Zotlabs/Update/_1060.php new file mode 100644 index 000000000..5182b803a --- /dev/null +++ b/Zotlabs/Update/_1060.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1060 { +function run() { + + $r = q("CREATE TABLE IF NOT EXISTS `vote` ( + `vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `vote_poll` int(11) NOT NULL DEFAULT '0', + `vote_element` int(11) NOT NULL DEFAULT '0', + `vote_result` text NOT NULL, + `vote_xchan` char(255) NOT NULL DEFAULT '', + PRIMARY KEY (`vote_id`), + UNIQUE KEY `vote_vote` (`vote_poll`,`vote_element`,`vote_xchan`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1061.php b/Zotlabs/Update/_1061.php new file mode 100644 index 000000000..e7af5bcb1 --- /dev/null +++ b/Zotlabs/Update/_1061.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1061 { +function run() { + $r = q("ALTER TABLE `vote` ADD INDEX ( `vote_poll` ), ADD INDEX ( `vote_element` ) "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1062.php b/Zotlabs/Update/_1062.php new file mode 100644 index 000000000..39aa80e8a --- /dev/null +++ b/Zotlabs/Update/_1062.php @@ -0,0 +1,34 @@ +<?php + +namespace Zotlabs\Update; + +class _1062 { +function run() { + $r1 = q("CREATE TABLE IF NOT EXISTS `poll` ( +`poll_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`poll_channel` INT UNSIGNED NOT NULL DEFAULT '0', +`poll_desc` TEXT NOT NULL DEFAULT '', +`poll_flags` INT NOT NULL DEFAULT '0', +`poll_votes` INT NOT NULL DEFAULT '0', +KEY `poll_channel` (`poll_channel`), +KEY `poll_flags` (`poll_flags`), +KEY `poll_votes` (`poll_votes`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + $r2 = q("CREATE TABLE IF NOT EXISTS `poll_elm` ( +`pelm_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`pelm_poll` INT UNSIGNED NOT NULL DEFAULT '0', +`pelm_desc` TEXT NOT NULL DEFAULT '', +`pelm_flags` INT NOT NULL DEFAULT '0', +`pelm_result` FLOAT NOT NULL DEFAULT '0', +KEY `pelm_poll` (`pelm_poll`), +KEY `pelm_result` (`pelm_result`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1063.php b/Zotlabs/Update/_1063.php new file mode 100644 index 000000000..04d523df6 --- /dev/null +++ b/Zotlabs/Update/_1063.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1063 { +function run() { + $r = q("ALTER TABLE `xchan` ADD `xchan_follow` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_connurl` , +ADD `xchan_connpage` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_follow` , +ADD INDEX ( `xchan_follow` ), ADD INDEX ( `xchan_connpage`) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1064.php b/Zotlabs/Update/_1064.php new file mode 100644 index 000000000..295dd96c5 --- /dev/null +++ b/Zotlabs/Update/_1064.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1064 { +function run() { + $r = q("ALTER TABLE `updates` ADD `ud_guid` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `ud_hash` , +ADD INDEX ( `ud_guid` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1065.php b/Zotlabs/Update/_1065.php new file mode 100644 index 000000000..0a3e9082e --- /dev/null +++ b/Zotlabs/Update/_1065.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1065 { +function run() { + $r = q("ALTER TABLE `item` DROP `wall`, ADD `layout_mid` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `target` , +ADD INDEX ( `layout_mid` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1066.php b/Zotlabs/Update/_1066.php new file mode 100644 index 000000000..e7d3fbbb4 --- /dev/null +++ b/Zotlabs/Update/_1066.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1066 { +function run() { + $r = q("ALTER TABLE `site` ADD `site_access` INT NOT NULL DEFAULT '0' AFTER `site_url` , +ADD INDEX ( `site_access` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1067.php b/Zotlabs/Update/_1067.php new file mode 100644 index 000000000..94782a15e --- /dev/null +++ b/Zotlabs/Update/_1067.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1067 { +function run() { + $r = q("ALTER TABLE `updates` DROP PRIMARY KEY , ADD `ud_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST, ADD INDEX ( `ud_hash` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1068.php b/Zotlabs/Update/_1068.php new file mode 100644 index 000000000..e2a70684f --- /dev/null +++ b/Zotlabs/Update/_1068.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1068 { +function run(){ + $r = q("ALTER TABLE `hubloc` ADD `hubloc_status` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `hubloc_flags` , ADD INDEX ( `hubloc_status` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1069.php b/Zotlabs/Update/_1069.php new file mode 100644 index 000000000..437c7ffef --- /dev/null +++ b/Zotlabs/Update/_1069.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1069 { +function run() { + $r = q("ALTER TABLE `site` ADD `site_sellpage` CHAR( 255 ) NOT NULL DEFAULT '', +ADD INDEX ( `site_sellpage` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1070.php b/Zotlabs/Update/_1070.php new file mode 100644 index 000000000..2ec03f752 --- /dev/null +++ b/Zotlabs/Update/_1070.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1070 { +function run() { + $r = q("ALTER TABLE `updates` ADD `ud_flags` INT NOT NULL DEFAULT '0', +ADD INDEX ( `ud_flags` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1071.php b/Zotlabs/Update/_1071.php new file mode 100644 index 000000000..f4e627e7f --- /dev/null +++ b/Zotlabs/Update/_1071.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1071 { +function run() { + $r = q("ALTER TABLE `updates` ADD `ud_addr` CHAR( 255 ) NOT NULL DEFAULT '', +ADD INDEX ( `ud_addr` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1072.php b/Zotlabs/Update/_1072.php new file mode 100644 index 000000000..191893547 --- /dev/null +++ b/Zotlabs/Update/_1072.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1072 { +function run() { + $r = q("ALTER TABLE `xtag` ADD `xtag_flags` INT NOT NULL DEFAULT '0', +ADD INDEX ( `xtag_flags` ) "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1073.php b/Zotlabs/Update/_1073.php new file mode 100644 index 000000000..f238d7a36 --- /dev/null +++ b/Zotlabs/Update/_1073.php @@ -0,0 +1,23 @@ +<?php + +namespace Zotlabs\Update; + +class _1073 { +function run() { + $r1 = q("CREATE TABLE IF NOT EXISTS `source` ( +`src_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`src_channel_id` INT UNSIGNED NOT NULL DEFAULT '0', +`src_channel_xchan` CHAR( 255 ) NOT NULL DEFAULT '', +`src_xchan` CHAR( 255 ) NOT NULL DEFAULT '', +`src_patt` MEDIUMTEXT NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + $r2 = q("ALTER TABLE `source` ADD INDEX ( `src_channel_id` ), ADD INDEX ( `src_channel_xchan` ), ADD INDEX ( `src_xchan` ) "); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1074.php b/Zotlabs/Update/_1074.php new file mode 100644 index 000000000..d331b935a --- /dev/null +++ b/Zotlabs/Update/_1074.php @@ -0,0 +1,19 @@ +<?php + +namespace Zotlabs\Update; + +class _1074 { +function run() { + $r1 = q("ALTER TABLE `site` ADD `site_sync` DATETIME NOT NULL AFTER `site_update` "); + + $r2 = q("ALTER TABLE `updates` ADD `ud_last` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `ud_date` , +ADD INDEX ( `ud_last` ) "); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1075.php b/Zotlabs/Update/_1075.php new file mode 100644 index 000000000..ac7c48f71 --- /dev/null +++ b/Zotlabs/Update/_1075.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1075 { +function run() { + $r = q("ALTER TABLE `channel` ADD `channel_a_republish` INT UNSIGNED NOT NULL DEFAULT '128', +ADD INDEX ( `channel_a_republish` )"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1076.php b/Zotlabs/Update/_1076.php new file mode 100644 index 000000000..c8c631822 --- /dev/null +++ b/Zotlabs/Update/_1076.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1076 { +function run() { + $r = q("ALTER TABLE `item` CHANGE `inform` `sig` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1077.php b/Zotlabs/Update/_1077.php new file mode 100644 index 000000000..3c23affbc --- /dev/null +++ b/Zotlabs/Update/_1077.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1077 { +function run() { + $r = q("ALTER TABLE `item` ADD `source_xchan` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `author_xchan` "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1078.php b/Zotlabs/Update/_1078.php new file mode 100644 index 000000000..c832a1c2a --- /dev/null +++ b/Zotlabs/Update/_1078.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1078 { +function run() { + $r = q("ALTER TABLE `channel` ADD `channel_dirdate` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_pageflags` , ADD INDEX ( `channel_dirdate` )"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1079.php b/Zotlabs/Update/_1079.php new file mode 100644 index 000000000..b10e2e7ae --- /dev/null +++ b/Zotlabs/Update/_1079.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1079 { +function run() { + $r = q("ALTER TABLE `site` ADD `site_location` CHAR( 255 ) NOT NULL DEFAULT ''"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1080.php b/Zotlabs/Update/_1080.php new file mode 100644 index 000000000..ab9c4c2f8 --- /dev/null +++ b/Zotlabs/Update/_1080.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1080 { +function run() { + $r = q("ALTER TABLE `mail` ADD `expires` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', +ADD INDEX ( `expires` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1081.php b/Zotlabs/Update/_1081.php new file mode 100644 index 000000000..521a39893 --- /dev/null +++ b/Zotlabs/Update/_1081.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1081 { +function run() { + $r = q("DROP TABLE `queue` "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1082.php b/Zotlabs/Update/_1082.php new file mode 100644 index 000000000..8ce8d20c1 --- /dev/null +++ b/Zotlabs/Update/_1082.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1082 { +function run() { + $r = q("DROP TABLE `challenge` "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1083.php b/Zotlabs/Update/_1083.php new file mode 100644 index 000000000..becb2b702 --- /dev/null +++ b/Zotlabs/Update/_1083.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1083 { +function run() { + $r = q("ALTER TABLE `notify` ADD `aid` INT NOT NULL AFTER `msg` , +ADD INDEX ( `aid` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1084.php b/Zotlabs/Update/_1084.php new file mode 100644 index 000000000..621d0346d --- /dev/null +++ b/Zotlabs/Update/_1084.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1084 { +function run() { + + + $r = q("CREATE TABLE if not exists `sys_perms` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , + `cat` CHAR( 255 ) NOT NULL , + `k` CHAR( 255 ) NOT NULL , + `v` MEDIUMTEXT NOT NULL, + `public_perm` TINYINT( 1 ) UNSIGNED NOT NULL +) ENGINE = MYISAM DEFAULT CHARSET = utf8"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1085.php b/Zotlabs/Update/_1085.php new file mode 100644 index 000000000..f50e56319 --- /dev/null +++ b/Zotlabs/Update/_1085.php @@ -0,0 +1,20 @@ +<?php + +namespace Zotlabs\Update; + +class _1085 { +function run() { + $r1 = q("ALTER TABLE `photo` CHANGE `desc` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL "); + + $r2 = q("RENAME TABLE `group` TO `groups`"); + + $r3 = q("ALTER TABLE `event` CHANGE `desc` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL "); + + if($r1 && $r2 && $r3) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1086.php b/Zotlabs/Update/_1086.php new file mode 100644 index 000000000..1b034daac --- /dev/null +++ b/Zotlabs/Update/_1086.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1086 { +function run() { + $r = q("ALTER TABLE `account` ADD `account_level` INT UNSIGNED NOT NULL DEFAULT '0', +ADD INDEX ( `account_level` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1087.php b/Zotlabs/Update/_1087.php new file mode 100644 index 000000000..839c16d91 --- /dev/null +++ b/Zotlabs/Update/_1087.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1087 { +function run() { + $r = q("ALTER TABLE `xprof` ADD `xprof_about` TEXT NOT NULL DEFAULT '', +ADD `xprof_homepage` CHAR( 255 ) NOT NULL DEFAULT '', +ADD `xprof_hometown` CHAR( 255 ) NOT NULL DEFAULT '', +ADD INDEX ( `xprof_hometown` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1088.php b/Zotlabs/Update/_1088.php new file mode 100644 index 000000000..5f478d0a1 --- /dev/null +++ b/Zotlabs/Update/_1088.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1088 { +function run() { + $r = q("ALTER TABLE `obj` ADD `allow_cid` MEDIUMTEXT NOT NULL DEFAULT '', +ADD `allow_gid` MEDIUMTEXT NOT NULL DEFAULT '', +ADD `deny_cid` MEDIUMTEXT NOT NULL DEFAULT '', +ADD `deny_gid` MEDIUMTEXT NOT NULL DEFAULT ''"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1089.php b/Zotlabs/Update/_1089.php new file mode 100644 index 000000000..0a8a1d55b --- /dev/null +++ b/Zotlabs/Update/_1089.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1089 { +function run() { + $r = q("ALTER TABLE `attach` ADD `creator` CHAR( 128 ) NOT NULL DEFAULT '' AFTER `hash` , +ADD INDEX ( `creator` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1090.php b/Zotlabs/Update/_1090.php new file mode 100644 index 000000000..efa7db7c2 --- /dev/null +++ b/Zotlabs/Update/_1090.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1090 { +function run() { + $r = q("ALTER TABLE `menu` ADD `menu_flags` INT NOT NULL DEFAULT '0', +ADD INDEX ( `menu_flags` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1091.php b/Zotlabs/Update/_1091.php new file mode 100644 index 000000000..ffb445c62 --- /dev/null +++ b/Zotlabs/Update/_1091.php @@ -0,0 +1,13 @@ +<?php + +namespace Zotlabs\Update; + +class _1091 { +function run() { + @os_mkdir('store/[data]/smarty3',STORAGE_DEFAULT_PERMISSIONS,true); + @file_put_contents('store/[data]/locks',''); + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1092.php b/Zotlabs/Update/_1092.php new file mode 100644 index 000000000..897c0c20b --- /dev/null +++ b/Zotlabs/Update/_1092.php @@ -0,0 +1,61 @@ +<?php + +namespace Zotlabs\Update; + +class _1092 { +function run() { + $r1 = q("CREATE TABLE IF NOT EXISTS `chat` ( + `chat_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `chat_room` int(10) unsigned NOT NULL DEFAULT '0', + `chat_xchan` char(255) NOT NULL DEFAULT '', + `chat_text` mediumtext NOT NULL, + `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', + PRIMARY KEY (`chat_id`), + KEY `chat_room` (`chat_room`), + KEY `chat_xchan` (`chat_xchan`), + KEY `created` (`created`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8"); + + $r2 = q("CREATE TABLE IF NOT EXISTS `chatpresence` ( + `cp_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `cp_room` int(10) unsigned NOT NULL DEFAULT '0', + `cp_xchan` char(255) NOT NULL DEFAULT '', + `cp_last` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', + `cp_status` char(255) NOT NULL, + PRIMARY KEY (`cp_id`), + KEY `cp_room` (`cp_room`), + KEY `cp_xchan` (`cp_xchan`), + KEY `cp_last` (`cp_last`), + KEY `cp_status` (`cp_status`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8"); + + $r3 = q("CREATE TABLE IF NOT EXISTS `chatroom` ( + `cr_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `cr_aid` int(10) unsigned NOT NULL DEFAULT '0', + `cr_uid` int(10) unsigned NOT NULL DEFAULT '0', + `cr_name` char(255) NOT NULL DEFAULT '', + `cr_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', + `cr_edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', + `allow_cid` mediumtext NOT NULL, + `allow_gid` mediumtext NOT NULL, + `deny_cid` mediumtext NOT NULL, + `deny_gid` mediumtext NOT NULL, + PRIMARY KEY (`cr_id`), + KEY `cr_aid` (`cr_aid`), + KEY `cr_uid` (`cr_uid`), + KEY `cr_name` (`cr_name`), + KEY `cr_created` (`cr_created`), + KEY `cr_edited` (`cr_edited`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8"); + + + if($r1 && $r2 && $r3) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1093.php b/Zotlabs/Update/_1093.php new file mode 100644 index 000000000..eb692e0b7 --- /dev/null +++ b/Zotlabs/Update/_1093.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1093 { +function run() { + $r = q("ALTER TABLE `chatpresence` ADD `cp_client` CHAR( 128 ) NOT NULL DEFAULT ''"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1094.php b/Zotlabs/Update/_1094.php new file mode 100644 index 000000000..c502c7a06 --- /dev/null +++ b/Zotlabs/Update/_1094.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1094 { +function run() { + $r = q("ALTER TABLE `chatroom` ADD `cr_expire` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `cr_edited` , +ADD INDEX ( `cr_expire` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1095.php b/Zotlabs/Update/_1095.php new file mode 100644 index 000000000..0f11fda62 --- /dev/null +++ b/Zotlabs/Update/_1095.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1095 { +function run() { + $r = q("ALTER TABLE `channel` ADD `channel_a_bookmark` INT UNSIGNED NOT NULL DEFAULT '128', +ADD INDEX ( `channel_a_bookmark` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1096.php b/Zotlabs/Update/_1096.php new file mode 100644 index 000000000..67abb9ee2 --- /dev/null +++ b/Zotlabs/Update/_1096.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1096 { +function run() { + $r = q("ALTER TABLE `account` CHANGE `account_level` `account_level` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1097.php b/Zotlabs/Update/_1097.php new file mode 100644 index 000000000..bfe04cf5f --- /dev/null +++ b/Zotlabs/Update/_1097.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1097 { +function run() { + + // fix some mangled hublocs from a bug long ago + + $r = q("select hubloc_id, hubloc_addr from hubloc where hubloc_addr like '%%/%%'"); + if($r) { + foreach($r as $rr) { + q("update hubloc set hubloc_addr = '%s' where hubloc_id = %d", + dbesc(substr($rr['hubloc_addr'],0,strpos($rr['hubloc_addr'],'/'))), + intval($rr['hubloc_id']) + ); + } + } + return UPDATE_SUCCESS; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1098.php b/Zotlabs/Update/_1098.php new file mode 100644 index 000000000..e74ba640c --- /dev/null +++ b/Zotlabs/Update/_1098.php @@ -0,0 +1,25 @@ +<?php + +namespace Zotlabs\Update; + +class _1098 { +function run() { + $r = q("ALTER TABLE `channel` CHANGE `channel_r_stream` `channel_r_stream` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r2 = q("ALTER TABLE `channel` CHANGE `channel_r_profile` `channel_r_profile` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r3 = q("ALTER TABLE `channel` CHANGE `channel_r_photos` `channel_r_photos` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r4 = q("ALTER TABLE `channel` CHANGE `channel_r_abook` `channel_r_abook` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r4 = q("ALTER TABLE `channel` CHANGE `channel_w_stream` `channel_w_stream` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r5 = q("ALTER TABLE `channel` CHANGE `channel_w_wall` `channel_w_wall` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r6 = q("ALTER TABLE `channel` CHANGE `channel_w_tagwall` `channel_w_tagwall` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r7 = q("ALTER TABLE `channel` CHANGE `channel_w_comment` `channel_w_comment` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r8 = q("ALTER TABLE `channel` CHANGE `channel_w_mail` `channel_w_mail` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r9 = q("ALTER TABLE `channel` CHANGE `channel_w_photos` `channel_w_photos` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r10 = q("ALTER TABLE `channel` CHANGE `channel_w_chat` `channel_w_chat` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + $r11 = q("ALTER TABLE `channel` CHANGE `channel_a_delegate` `channel_a_delegate` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); + if($r && $r2 && $r3 && $r3 && $r5 && $r6 && $r7 && $r8 && $r9 && $r9 && $r10 && $r11) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1099.php b/Zotlabs/Update/_1099.php new file mode 100644 index 000000000..a49e38c7c --- /dev/null +++ b/Zotlabs/Update/_1099.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1099 { +function run() { + $r = q("CREATE TABLE IF NOT EXISTS `xchat` ( + `xchat_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `xchat_url` char(255) NOT NULL DEFAULT '', + `xchat_desc` char(255) NOT NULL DEFAULT '', + `xchat_xchan` char(255) NOT NULL DEFAULT '', + PRIMARY KEY (`xchat_id`), + KEY `xchat_url` (`xchat_url`), + KEY `xchat_desc` (`xchat_desc`), + KEY `xchat_xchan` (`xchat_xchan`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1100.php b/Zotlabs/Update/_1100.php new file mode 100644 index 000000000..ffcd7dc1d --- /dev/null +++ b/Zotlabs/Update/_1100.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1100 { +function run() { + $r = q("ALTER TABLE `xchat` ADD `xchat_edited` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', +ADD INDEX ( `xchat_edited` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1101.php b/Zotlabs/Update/_1101.php new file mode 100644 index 000000000..709b6fa0a --- /dev/null +++ b/Zotlabs/Update/_1101.php @@ -0,0 +1,13 @@ +<?php + +namespace Zotlabs\Update; + +class _1101 { +function run() { + $r = q("update updates set ud_flags = 2 where ud_flags = (-1)"); + $r = q("update updates set ud_flags = 0 where ud_flags = 4096"); + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1102.php b/Zotlabs/Update/_1102.php new file mode 100644 index 000000000..d25979b1f --- /dev/null +++ b/Zotlabs/Update/_1102.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1102 { +function run() { + $r = q("update abook set abook_flags = (abook_flags - %d) + where ( abook_flags & %d)", + intval(ABOOK_FLAG_UNCONNECTED), + intval(ABOOK_FLAG_UNCONNECTED) + ); + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1103.php b/Zotlabs/Update/_1103.php new file mode 100644 index 000000000..3f9a9286c --- /dev/null +++ b/Zotlabs/Update/_1103.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1103 { +function run() { + $x = curl_version(); + if(stristr($x['ssl_version'],'openssl')) + set_config('system','curl_ssl_ciphers','ALL:!eNULL'); + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1104.php b/Zotlabs/Update/_1104.php new file mode 100644 index 000000000..0d299095b --- /dev/null +++ b/Zotlabs/Update/_1104.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1104 { +function run() { + $r = q("ALTER TABLE `item` ADD `route` TEXT NOT NULL DEFAULT '' AFTER `postopts` "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1105.php b/Zotlabs/Update/_1105.php new file mode 100644 index 000000000..a96600150 --- /dev/null +++ b/Zotlabs/Update/_1105.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1105 { +function run() { + $r = q("ALTER TABLE `site` ADD `site_pull` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `site_update` , +CHANGE `site_sync` `site_sync` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( `site_pull` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1106.php b/Zotlabs/Update/_1106.php new file mode 100644 index 000000000..7e13d8993 --- /dev/null +++ b/Zotlabs/Update/_1106.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1106 { +function run() { + $r = q("ALTER TABLE `notify` CHANGE `parent` `parent` CHAR( 255 ) NOT NULL DEFAULT ''"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1107.php b/Zotlabs/Update/_1107.php new file mode 100644 index 000000000..bcac6cf19 --- /dev/null +++ b/Zotlabs/Update/_1107.php @@ -0,0 +1,34 @@ +<?php + +namespace Zotlabs\Update; + +class _1107 { +function run() { + $r = q("CREATE TABLE IF NOT EXISTS `app` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `app_id` char(64) NOT NULL DEFAULT '', + `app_sig` char(255) NOT NULL DEFAULT '', + `app_author` char(255) NOT NULL DEFAULT '', + `app_name` char(255) NOT NULL DEFAULT '', + `app_desc` text NOT NULL, + `app_url` char(255) NOT NULL DEFAULT '', + `app_photo` char(255) NOT NULL DEFAULT '', + `app_version` char(255) NOT NULL DEFAULT '', + `app_channel` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `app_id` (`app_id`), + KEY `app_name` (`app_name`), + KEY `app_url` (`app_url`), + KEY `app_photo` (`app_photo`), + KEY `app_version` (`app_version`), + KEY `app_channel` (`app_channel`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1108.php b/Zotlabs/Update/_1108.php new file mode 100644 index 000000000..d9d9b0c18 --- /dev/null +++ b/Zotlabs/Update/_1108.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1108 { +function run() { + $r = q("ALTER TABLE `app` ADD `app_addr` CHAR( 255 ) NOT NULL DEFAULT '', +ADD `app_price` CHAR( 255 ) NOT NULL DEFAULT '', +ADD `app_page` CHAR( 255 ) NOT NULL DEFAULT '', +ADD INDEX ( `app_price` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1109.php b/Zotlabs/Update/_1109.php new file mode 100644 index 000000000..6a0aed28f --- /dev/null +++ b/Zotlabs/Update/_1109.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1109 { +function run() { + $r = q("ALTER TABLE `app` CHANGE `app_id` `app_id` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + +// We ended up with an extra zero in the name for 1108, so do it over and ignore the result. + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1110.php b/Zotlabs/Update/_1110.php new file mode 100644 index 000000000..62bcbd0c8 --- /dev/null +++ b/Zotlabs/Update/_1110.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1110 { +function run() { + $r = q("ALTER TABLE `app` ADD `app_addr` CHAR( 255 ) NOT NULL DEFAULT '', +ADD `app_price` CHAR( 255 ) NOT NULL DEFAULT '', +ADD `app_page` CHAR( 255 ) NOT NULL DEFAULT '', +ADD INDEX ( `app_price` )"); + + return UPDATE_SUCCESS; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1111.php b/Zotlabs/Update/_1111.php new file mode 100644 index 000000000..a3080b465 --- /dev/null +++ b/Zotlabs/Update/_1111.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1111 { +function run() { + $r = q("ALTER TABLE `app` ADD `app_requires` CHAR( 255 ) NOT NULL DEFAULT '' "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1112.php b/Zotlabs/Update/_1112.php new file mode 100644 index 000000000..e81780519 --- /dev/null +++ b/Zotlabs/Update/_1112.php @@ -0,0 +1,29 @@ +<?php + +namespace Zotlabs\Update; + +class _1112 { +function run() { + $r = q("CREATE TABLE IF NOT EXISTS `likes` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `liker` char(128) NOT NULL DEFAULT '', + `likee` char(128) NOT NULL DEFAULT '', + `iid` int(11) NOT NULL DEFAULT '0', + `verb` char(255) NOT NULL DEFAULT '', + `target_type` char(255) NOT NULL DEFAULT '', + `target` mediumtext NOT NULL, + PRIMARY KEY (`id`), + KEY `liker` (`liker`), + KEY `likee` (`likee`), + KEY `iid` (`iid`), + KEY `verb` (`verb`), + KEY `target_type` (`target_type`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8"); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1113.php b/Zotlabs/Update/_1113.php new file mode 100644 index 000000000..0a726dcc3 --- /dev/null +++ b/Zotlabs/Update/_1113.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1113 { +function run() { + $r = q("ALTER TABLE `likes` ADD `channel_id` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `id` , +CHANGE `iid` `iid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0', +ADD INDEX ( `channel_id` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1114.php b/Zotlabs/Update/_1114.php new file mode 100644 index 000000000..5b564d513 --- /dev/null +++ b/Zotlabs/Update/_1114.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1114 { +function run() { + $r = q("ALTER TABLE `likes` ADD `target_id` CHAR( 128 ) NOT NULL DEFAULT '' AFTER `target_type` , +ADD INDEX ( `target_id` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1115.php b/Zotlabs/Update/_1115.php new file mode 100644 index 000000000..4edf63b85 --- /dev/null +++ b/Zotlabs/Update/_1115.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1115 { +function run() { + + // Introducing email verification. Mark all existing accounts as verified or they + // won't be able to login. + + $r = q("update account set account_flags = (account_flags ^ 1) where (account_flags & 1) "); + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1116.php b/Zotlabs/Update/_1116.php new file mode 100644 index 000000000..9fa7270ea --- /dev/null +++ b/Zotlabs/Update/_1116.php @@ -0,0 +1,12 @@ +<?php + +namespace Zotlabs\Update; + +class _1116 { +function run() { + @os_mkdir('store/[data]/smarty3',STORAGE_DEFAULT_PERMISSIONS,true); + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1117.php b/Zotlabs/Update/_1117.php new file mode 100644 index 000000000..cc8edb3c9 --- /dev/null +++ b/Zotlabs/Update/_1117.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1117 { +function run() { + $r = q("ALTER TABLE `channel` CHANGE `channel_a_bookmark` `channel_w_like` INT( 10 ) UNSIGNED NOT NULL DEFAULT '128', +DROP INDEX `channel_a_bookmark` , ADD INDEX `channel_w_like` ( `channel_w_like` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1118.php b/Zotlabs/Update/_1118.php new file mode 100644 index 000000000..22cfc2357 --- /dev/null +++ b/Zotlabs/Update/_1118.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1118 { +function run() { + $r = q("ALTER TABLE `account` ADD `account_password_changed` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', +ADD INDEX ( `account_password_changed` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1119.php b/Zotlabs/Update/_1119.php new file mode 100644 index 000000000..ccf03e45a --- /dev/null +++ b/Zotlabs/Update/_1119.php @@ -0,0 +1,35 @@ +<?php + +namespace Zotlabs\Update; + +class _1119 { +function run() { + $r1 = q("CREATE TABLE IF NOT EXISTS `profdef` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `field_name` char(255) NOT NULL DEFAULT '', + `field_type` char(16) NOT NULL DEFAULT '', + `field_desc` char(255) NOT NULL DEFAULT '', + `field_help` char(255) NOT NULL DEFAULT '', + PRIMARY KEY (`id`), + KEY `field_name` (`field_name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8"); + + $r2 = q("CREATE TABLE IF NOT EXISTS `profext` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `channel_id` int(10) unsigned NOT NULL DEFAULT '0', + `hash` char(255) NOT NULL DEFAULT '', + `k` char(255) NOT NULL DEFAULT '', + `v` mediumtext NOT NULL, + PRIMARY KEY (`id`), + KEY `channel_id` (`channel_id`), + KEY `hash` (`hash`), + KEY `k` (`k`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8"); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1120.php b/Zotlabs/Update/_1120.php new file mode 100644 index 000000000..c1f7e98d7 --- /dev/null +++ b/Zotlabs/Update/_1120.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1120 { +function run() { + $r = q("ALTER TABLE `item` ADD `public_policy` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `coord` , +ADD INDEX ( `public_policy` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1121.php b/Zotlabs/Update/_1121.php new file mode 100644 index 000000000..c5ff00694 --- /dev/null +++ b/Zotlabs/Update/_1121.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1121 { +function run() { + $r = q("ALTER TABLE `site` ADD `site_realm` CHAR( 255 ) NOT NULL DEFAULT '', +ADD INDEX ( `site_realm` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1122.php b/Zotlabs/Update/_1122.php new file mode 100644 index 000000000..903e3aaeb --- /dev/null +++ b/Zotlabs/Update/_1122.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1122 { +function run() { + $r = q("update site set site_realm = '%s' where true", + dbesc(DIRECTORY_REALM) + ); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1123.php b/Zotlabs/Update/_1123.php new file mode 100644 index 000000000..96096beac --- /dev/null +++ b/Zotlabs/Update/_1123.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1123 { +function run() { + $r1 = q("ALTER TABLE `hubloc` ADD `hubloc_network` CHAR( 32 ) NOT NULL DEFAULT '' AFTER `hubloc_addr` , +ADD INDEX ( `hubloc_network` )"); + $r2 = q("update hubloc set hubloc_network = 'zot' where true"); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1124.php b/Zotlabs/Update/_1124.php new file mode 100644 index 000000000..1320b8b55 --- /dev/null +++ b/Zotlabs/Update/_1124.php @@ -0,0 +1,41 @@ +<?php + +namespace Zotlabs\Update; + +class _1124 { +function run() { + $r1 = q("CREATE TABLE IF NOT EXISTS `sign` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `iid` int(10) unsigned NOT NULL DEFAULT '0', + `retract_iid` int(10) unsigned NOT NULL DEFAULT '0', + `signed_text` mediumtext NOT NULL, + `signature` text NOT NULL, + `signer` char(255) NOT NULL, + PRIMARY KEY (`id`), + KEY `iid` (`iid`), + KEY `retract_iid` (`retract_iid`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + $r2 = q("CREATE TABLE IF NOT EXISTS `conv` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `guid` char(255) NOT NULL, + `recips` mediumtext NOT NULL, + `uid` int(11) NOT NULL, + `creator` char(255) NOT NULL, + `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', + `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', + `subject` mediumtext NOT NULL, + PRIMARY KEY (`id`), + KEY `created` (`created`), + KEY `updated` (`updated`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1125.php b/Zotlabs/Update/_1125.php new file mode 100644 index 000000000..03f9640a4 --- /dev/null +++ b/Zotlabs/Update/_1125.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1125 { +function run() { + $r = q("ALTER TABLE `profdef` ADD `field_inputs` MEDIUMTEXT NOT NULL DEFAULT ''"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1126.php b/Zotlabs/Update/_1126.php new file mode 100644 index 000000000..f657cc6b2 --- /dev/null +++ b/Zotlabs/Update/_1126.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1126 { +function run() { + $r = q("ALTER TABLE `mail` ADD `convid` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `id` , +ADD INDEX ( `convid` )"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1127.php b/Zotlabs/Update/_1127.php new file mode 100644 index 000000000..8dec64ae4 --- /dev/null +++ b/Zotlabs/Update/_1127.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1127 { +function run() { + $r = q("ALTER TABLE `item` ADD `comments_closed` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `changed` , +ADD INDEX ( `comments_closed` ), ADD INDEX ( `changed` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1128.php b/Zotlabs/Update/_1128.php new file mode 100644 index 000000000..8ee6d225e --- /dev/null +++ b/Zotlabs/Update/_1128.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1128 { +function run() { + $r = q("ALTER TABLE `item` ADD `diaspora_meta` MEDIUMTEXT NOT NULL DEFAULT '' AFTER `sig` "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1129.php b/Zotlabs/Update/_1129.php new file mode 100644 index 000000000..76bd155ee --- /dev/null +++ b/Zotlabs/Update/_1129.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1129 { +function run() { + $r = q("update hubloc set hubloc_network = 'zot' where hubloc_network = ''"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1130.php b/Zotlabs/Update/_1130.php new file mode 100644 index 000000000..1322a0b13 --- /dev/null +++ b/Zotlabs/Update/_1130.php @@ -0,0 +1,28 @@ +<?php + +namespace Zotlabs\Update; + +class _1130 { +function run() { + $myperms = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK + |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT + |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE; + + $r = q("select abook_channel, abook_my_perms from abook where (abook_flags & %d) and abook_my_perms != 0", + intval(ABOOK_FLAG_SELF) + ); + if($r) { + foreach($r as $rr) { + set_pconfig($rr['abook_channel'],'system','autoperms',$rr['abook_my_perms']); + } + } + $r = q("update abook set abook_my_perms = %d where (abook_flags & %d) and abook_my_perms = 0", + intval($myperms), + intval(ABOOK_FLAG_SELF) + ); + + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1131.php b/Zotlabs/Update/_1131.php new file mode 100644 index 000000000..72e968f67 --- /dev/null +++ b/Zotlabs/Update/_1131.php @@ -0,0 +1,20 @@ +<?php + +namespace Zotlabs\Update; + +class _1131 { +function run() { + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) // make sure this gets skipped for anyone who hasn't run it yet, it will fail on pg + return UPDATE_SUCCESS; + + $r1 = q("ALTER TABLE `abook` ADD `abook_rating_text` TEXT NOT NULL DEFAULT '' AFTER `abook_rating` "); + $r2 = q("ALTER TABLE `xlink` ADD `xlink_rating_text` TEXT NOT NULL DEFAULT '' AFTER `xlink_rating` "); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1132.php b/Zotlabs/Update/_1132.php new file mode 100644 index 000000000..9e085a351 --- /dev/null +++ b/Zotlabs/Update/_1132.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1132 { +function run() { + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { // correct previous failed update + $r1 = q("ALTER TABLE abook ADD abook_rating_text TEXT NOT NULL DEFAULT '' "); + $r2 = q("ALTER TABLE xlink ADD xlink_rating_text TEXT NOT NULL DEFAULT '' "); + if(!$r1 || !$r2) + return UPDATE_FAILED; + } + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1133.php b/Zotlabs/Update/_1133.php new file mode 100644 index 000000000..3820ef1ee --- /dev/null +++ b/Zotlabs/Update/_1133.php @@ -0,0 +1,38 @@ +<?php + +namespace Zotlabs\Update; + +class _1133 { +function run() { + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("CREATE TABLE xperm ( + xp_id serial NOT NULL, + xp_client varchar( 20 ) NOT NULL DEFAULT '', + xp_channel bigint NOT NULL DEFAULT '0', + xp_perm varchar( 64 ) NOT NULL DEFAULT '', + PRIMARY KEY (xp_id) )"); + $r2 = 0; + foreach(array('xp_client', 'xp_channel', 'xp_perm') as $fld) + $r2 += ((q("create index $fld on xperm ($fld)") == false) ? 0 : 1); + + $r = (($r1 && $r2) ? true : false); + } + else { + $r = q("CREATE TABLE IF NOT EXISTS `xperm` ( + `xp_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , + `xp_client` VARCHAR( 20 ) NOT NULL DEFAULT '', + `xp_channel` INT UNSIGNED NOT NULL DEFAULT '0', + `xp_perm` VARCHAR( 64 ) NOT NULL DEFAULT '', + KEY `xp_client` (`xp_client`), + KEY `xp_channel` (`xp_channel`), + KEY `xp_perm` (`xp_perm`) + ) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + } + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1134.php b/Zotlabs/Update/_1134.php new file mode 100644 index 000000000..d52bab044 --- /dev/null +++ b/Zotlabs/Update/_1134.php @@ -0,0 +1,20 @@ +<?php + +namespace Zotlabs\Update; + +class _1134 { +function run() { + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("ALTER TABLE xlink ADD xlink_static numeric(1) NOT NULL DEFAULT '0' "); + $r2 = q("create index xlink_static on xlink ( xlink_static ) "); + $r = $r1 && $r2; + } + else + $r = q("ALTER TABLE xlink ADD xlink_static TINYINT( 1 ) NOT NULL DEFAULT '0', ADD INDEX ( xlink_static ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1135.php b/Zotlabs/Update/_1135.php new file mode 100644 index 000000000..92a3e04b6 --- /dev/null +++ b/Zotlabs/Update/_1135.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1135 { +function run() { + $r = q("ALTER TABLE xlink ADD xlink_sig TEXT NOT NULL DEFAULT ''"); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1136.php b/Zotlabs/Update/_1136.php new file mode 100644 index 000000000..0c1691fcb --- /dev/null +++ b/Zotlabs/Update/_1136.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1136 { +function run() { + $r1 = q("alter table item add item_unseen smallint not null default '0' "); + $r2 = q("create index item_unseen on item ( item_unseen ) "); + $r3 = q("update item set item_unseen = 1 where ( item_flags & 2 ) > 0 "); + + if($r1 && $r2 && $r3) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1137.php b/Zotlabs/Update/_1137.php new file mode 100644 index 000000000..ab11fe3db --- /dev/null +++ b/Zotlabs/Update/_1137.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1137 { +function run() { + $r1 = q("alter table site add site_valid smallint not null default '0' "); + $r2 = q("create index site_valid on site ( site_valid ) "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1138.php b/Zotlabs/Update/_1138.php new file mode 100644 index 000000000..b2eac12af --- /dev/null +++ b/Zotlabs/Update/_1138.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1138 { +function run() { + $r1 = q("alter table outq add outq_priority smallint not null default '0' "); + $r2 = q("create index outq_priority on outq ( outq_priority ) "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1139.php b/Zotlabs/Update/_1139.php new file mode 100644 index 000000000..aa4863fc1 --- /dev/null +++ b/Zotlabs/Update/_1139.php @@ -0,0 +1,21 @@ +<?php + +namespace Zotlabs\Update; + +class _1139 { +function run() { + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("ALTER TABLE channel ADD channel_lastpost timestamp NOT NULL DEFAULT '0001-01-01 00:00:00'"); + $r2 = q("create index channel_lastpost on channel ( channel_lastpost ) "); + $r = $r1 && $r2; + } + else + $r = q("ALTER TABLE `channel` ADD `channel_lastpost` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_dirdate` , ADD INDEX ( `channel_lastpost` ) "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1140.php b/Zotlabs/Update/_1140.php new file mode 100644 index 000000000..5b4c8f801 --- /dev/null +++ b/Zotlabs/Update/_1140.php @@ -0,0 +1,27 @@ +<?php + +namespace Zotlabs\Update; + +class _1140 { +function run() { + $r = q("select * from clients where true"); + $x = false; + if($r) { + foreach($r as $rr) { + $m = q("INSERT INTO xperm (xp_client, xp_channel, xp_perm) VALUES ('%s', %d, '%s') ", + dbesc($rr['client_id']), + intval($rr['uid']), + dbesc('all') + ); + if(! $m) + $x = true; + } + } + if($x) + return UPDATE_FAILED; + return UPDATE_SUCCESS; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1141.php b/Zotlabs/Update/_1141.php new file mode 100644 index 000000000..e1f84f469 --- /dev/null +++ b/Zotlabs/Update/_1141.php @@ -0,0 +1,30 @@ +<?php + +namespace Zotlabs\Update; + +class _1141 { +function run() { + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("ALTER TABLE menu ADD menu_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', ADD menu_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00'"); + $r2 = q("create index menu_created on menu ( menu_created ) "); + $r3 = q("create index menu_edited on menu ( menu_edited ) "); + $r = $r1 && $r2; + } + else + $r = q("ALTER TABLE menu ADD menu_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD menu_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( menu_created ), ADD INDEX ( menu_edited ) "); + + $t = datetime_convert(); + q("update menu set menu_created = '%s', menu_edited = '%s' where true", + dbesc($t), + dbesc($t) + ); + + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1142.php b/Zotlabs/Update/_1142.php new file mode 100644 index 000000000..a8ffcc182 --- /dev/null +++ b/Zotlabs/Update/_1142.php @@ -0,0 +1,18 @@ +<?php + +namespace Zotlabs\Update; + +class _1142 { +function run() { + + $r1 = q("alter table site add site_dead smallint not null default '0' "); + $r2 = q("create index site_dead on site ( site_dead ) "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1143.php b/Zotlabs/Update/_1143.php new file mode 100644 index 000000000..99f23af61 --- /dev/null +++ b/Zotlabs/Update/_1143.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1143 { +function run() { + + $r1 = q("ALTER TABLE abook ADD abook_incl TEXT NOT NULL DEFAULT ''"); + $r2 = q("ALTER TABLE abook ADD abook_excl TEXT NOT NULL DEFAULT '' "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1144.php b/Zotlabs/Update/_1144.php new file mode 100644 index 000000000..848897de7 --- /dev/null +++ b/Zotlabs/Update/_1144.php @@ -0,0 +1,27 @@ +<?php + +namespace Zotlabs\Update; + +class _1144 { +function run() { + $r = q("select flags, id from attach where flags != 0"); + if($r) { + foreach($r as $rr) { + if($rr['flags'] & 1) { + q("update attach set is_dir = 1 where id = %d", + intval($rr['id']) + ); + } + if($rr['flags'] & 2) { + q("update attach set os_storage = 1 where id = %d", + intval($rr['id']) + ); + } + } + } + + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1145.php b/Zotlabs/Update/_1145.php new file mode 100644 index 000000000..5102acc8a --- /dev/null +++ b/Zotlabs/Update/_1145.php @@ -0,0 +1,30 @@ +<?php + +namespace Zotlabs\Update; + +class _1145 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("ALTER TABLE event ADD event_status char(255) NOT NULL DEFAULT '', + ADD event_status_date timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', + ADD event_percent SMALLINT NOT NULL DEFAULT '0', + ADD event_repeat TEXT NOT NULL DEFAULT '' "); + $r2 = q("create index event_status on event ( event_status )"); + $r = $r1 && $r2; + } + else { + $r = q("ALTER TABLE `event` ADD `event_status` CHAR( 255 ) NOT NULL DEFAULT '', + ADD `event_status_date` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', + ADD `event_percent` SMALLINT NOT NULL DEFAULT '0', + ADD `event_repeat` TEXT NOT NULL DEFAULT '', + ADD INDEX ( `event_status` ) "); + } + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1146.php b/Zotlabs/Update/_1146.php new file mode 100644 index 000000000..92a26adaf --- /dev/null +++ b/Zotlabs/Update/_1146.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1146 { +function run() { + + $r1 = q("alter table event add event_sequence smallint not null default '0' "); + $r2 = q("create index event_sequence on event ( event_sequence ) "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1147.php b/Zotlabs/Update/_1147.php new file mode 100644 index 000000000..b8f6716f7 --- /dev/null +++ b/Zotlabs/Update/_1147.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1147 { +function run() { + + $r1 = q("alter table event add event_priority smallint not null default '0' "); + $r2 = q("create index event_priority on event ( event_priority ) "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1148.php b/Zotlabs/Update/_1148.php new file mode 100644 index 000000000..ed9a4d93a --- /dev/null +++ b/Zotlabs/Update/_1148.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1148 { +function run() { + $r1 = q("alter table likes add i_mid char(255) not null default '' "); + $r2 = q("create index i_mid on likes ( i_mid ) "); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1149.php b/Zotlabs/Update/_1149.php new file mode 100644 index 000000000..f45bd995b --- /dev/null +++ b/Zotlabs/Update/_1149.php @@ -0,0 +1,35 @@ +<?php + +namespace Zotlabs\Update; + +class _1149 { +function run() { + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("ALTER TABLE obj ADD obj_term CHAR( 255 ) NOT NULL DEFAULT '', + ADD obj_url CHAR( 255 ) NOT NULL DEFAULT '', + ADD obj_imgurl CHAR( 255 ) NOT NULL DEFAULT '', + ADD obj_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', + ADD obj_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' "); + } + else { + $r1 = q("ALTER TABLE obj ADD obj_term CHAR( 255 ) NOT NULL DEFAULT '', + ADD obj_url CHAR( 255 ) NOT NULL DEFAULT '', + ADD obj_imgurl CHAR( 255 ) NOT NULL DEFAULT '', + ADD obj_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', + ADD obj_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' "); + } + + $r2 = q("create index obj_term on obj ( obj_term ) "); + $r3 = q("create index obj_url on obj ( obj_url ) "); + $r4 = q("create index obj_imgurl on obj ( obj_imgurl ) "); + $r5 = q("create index obj_created on obj ( obj_created ) "); + $r6 = q("create index obj_edited on obj ( obj_edited ) "); + $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6; + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1150.php b/Zotlabs/Update/_1150.php new file mode 100644 index 000000000..896fc75e3 --- /dev/null +++ b/Zotlabs/Update/_1150.php @@ -0,0 +1,28 @@ +<?php + +namespace Zotlabs\Update; + +class _1150 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("ALTER TABLE app ADD app_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', + ADD app_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' "); + } + else { + $r1 = q("ALTER TABLE app ADD app_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', + ADD app_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' "); + } + + $r2 = q("create index app_created on app ( app_created ) "); + $r3 = q("create index app_edited on app ( app_edited ) "); + + $r = $r1 && $r2 && $r3; + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1151.php b/Zotlabs/Update/_1151.php new file mode 100644 index 000000000..d14baabb1 --- /dev/null +++ b/Zotlabs/Update/_1151.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1151 { +function run() { + + $r3 = q("select likes.*, item.mid from likes left join item on likes.iid = item.id"); + if($r3) { + foreach($r3 as $rr) { + q("update likes set i_mid = '%s' where id = $d", + dbesc($rr['mid']), + intval($rr['id']) + ); + } + } + + + return UPDATE_SUCCESS; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1152.php b/Zotlabs/Update/_1152.php new file mode 100644 index 000000000..54393d590 --- /dev/null +++ b/Zotlabs/Update/_1152.php @@ -0,0 +1,57 @@ +<?php + +namespace Zotlabs\Update; + +class _1152 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + + $r1 = q("CREATE TABLE IF NOT EXISTS \"dreport\" ( + \"dreport_id\" serial NOT NULL, + \"dreport_channel\" int(11) NOT NULL DEFAULT '0', + \"dreport_mid\" char(255) NOT NULL DEFAULT '', + \"dreport_site\" char(255) NOT NULL DEFAULT '', + \"dreport_recip\" char(255) NOT NULL DEFAULT '', + \"dreport_result\" char(255) NOT NULL DEFAULT '', + \"dreport_time\" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', + \"dreport_xchan\" char(255) NOT NULL DEFAULT '', + PRIMARY KEY (\"dreport_id\") "); + + $r2 = q("create index \"dreport_mid\" on dreport (\"dreport_mid\") "); + $r3 = q("create index \"dreport_site\" on dreport (\"dreport_site\") "); + $r4 = q("create index \"dreport_time\" on dreport (\"dreport_time\") "); + $r5 = q("create index \"dreport_xchan\" on dreport (\"dreport_xchan\") "); + $r6 = q("create index \"dreport_channel\" on dreport (\"dreport_channel\") "); + + $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6; + + } + else { + $r = q("CREATE TABLE IF NOT EXISTS `dreport` ( + `dreport_id` int(11) NOT NULL AUTO_INCREMENT, + `dreport_channel` int(11) NOT NULL DEFAULT '0', + `dreport_mid` char(255) NOT NULL DEFAULT '', + `dreport_site` char(255) NOT NULL DEFAULT '', + `dreport_recip` char(255) NOT NULL DEFAULT '', + `dreport_result` char(255) NOT NULL DEFAULT '', + `dreport_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', + `dreport_xchan` char(255) NOT NULL DEFAULT '', + PRIMARY KEY (`dreport_id`), + KEY `dreport_mid` (`dreport_mid`), + KEY `dreport_site` (`dreport_site`), + KEY `dreport_time` (`dreport_time`), + KEY `dreport_xchan` (`dreport_xchan`), + KEY `dreport_channel` (`dreport_channel`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + } + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1153.php b/Zotlabs/Update/_1153.php new file mode 100644 index 000000000..cf8d451b4 --- /dev/null +++ b/Zotlabs/Update/_1153.php @@ -0,0 +1,18 @@ +<?php + +namespace Zotlabs\Update; + +class _1153 { +function run() { + + $r1 = q("ALTER TABLE dreport ADD dreport_queue CHAR( 255 ) NOT NULL DEFAULT '' "); + $r2 = q("create index dreport_queue on dreport ( dreport_queue) "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1154.php b/Zotlabs/Update/_1154.php new file mode 100644 index 000000000..6e92f525d --- /dev/null +++ b/Zotlabs/Update/_1154.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1154 { +function run() { + + $r = q("ALTER TABLE event ADD event_vdata text NOT NULL "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1155.php b/Zotlabs/Update/_1155.php new file mode 100644 index 000000000..8f2553b3e --- /dev/null +++ b/Zotlabs/Update/_1155.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1155 { +function run() { + + $r1 = q("alter table site add site_type smallint not null default '0' "); + $r2 = q("create index site_type on site ( site_type ) "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1156.php b/Zotlabs/Update/_1156.php new file mode 100644 index 000000000..536a219d8 --- /dev/null +++ b/Zotlabs/Update/_1156.php @@ -0,0 +1,28 @@ +<?php + +namespace Zotlabs\Update; + +class _1156 { +function run() { + $r1 = q("ALTER TABLE mail ADD conv_guid CHAR( 255 ) NOT NULL DEFAULT '' "); + $r2 = q("create index conv_guid on mail ( conv_guid ) "); + + $r3 = q("select mail.id, mail.convid, conv.guid from mail left join conv on mail.convid = conv.id where true"); + if($r3) { + foreach($r3 as $rr) { + if($rr['convid']) { + q("update mail set conv_guid = '%s' where id = %d", + dbesc($rr['guid']), + intval($rr['id']) + ); + } + } + } + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1157.php b/Zotlabs/Update/_1157.php new file mode 100644 index 000000000..01f452f32 --- /dev/null +++ b/Zotlabs/Update/_1157.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1157 { +function run() { + $r1 = q("alter table site add site_project char(255) not null default '' "); + $r2 = q("create index site_project on site ( site_project ) "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1158.php b/Zotlabs/Update/_1158.php new file mode 100644 index 000000000..89ac3daa1 --- /dev/null +++ b/Zotlabs/Update/_1158.php @@ -0,0 +1,22 @@ +<?php + +namespace Zotlabs\Update; + +class _1158 { +function run() { + $r = q("select attach.id, attach.data, channel_address from attach left join channel on attach.uid = channel_id where os_storage = 1 and not attach.data like '%%store%%' "); + if($r) { + foreach($r as $rr) { + $has_slash = ((substr($rr['data'],0,1) === '/') ? true : false); + q("update attach set data = '%s' where id = %d", + dbesc('store/' . $rr['channel_address']. (($has_slash) ? '' : '/' . $rr['data'])), + dbesc($rr['id']) + ); + } + } + return UPDATE_SUCCESS; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1159.php b/Zotlabs/Update/_1159.php new file mode 100644 index 000000000..1445092ad --- /dev/null +++ b/Zotlabs/Update/_1159.php @@ -0,0 +1,25 @@ +<?php + +namespace Zotlabs\Update; + +class _1159 { +function run() { + $r = q("select attach.id, attach.data, attach.hash, channel_address from attach left join channel on attach.uid = channel_id where os_storage = 1 "); + if($r) { + foreach($r as $rr) { + $x = dbunescbin($rr['data']); + $has_slash = (($x === 'store/' . $rr['channel_address'] . '/') ? true : false); + if(($x === 'store/' . $rr['channel_address']) || ($has_slash)) { + q("update attach set data = '%s' where id = %d", + dbesc('store/' . $rr['channel_address']. (($has_slash) ? '' : '/' . $rr['hash'])), + dbesc($rr['id']) + ); + } + } + } + return UPDATE_SUCCESS; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1160.php b/Zotlabs/Update/_1160.php new file mode 100644 index 000000000..b7b67076f --- /dev/null +++ b/Zotlabs/Update/_1160.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1160 { +function run() { + $r = q("alter table abook add abook_instance text not null default '' "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1161.php b/Zotlabs/Update/_1161.php new file mode 100644 index 000000000..870eb7ed6 --- /dev/null +++ b/Zotlabs/Update/_1161.php @@ -0,0 +1,43 @@ +<?php + +namespace Zotlabs\Update; + +class _1161 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("CREATE TABLE \"iconfig\" ( + \"id\" serial NOT NULL, + \"iid\" bigint NOT NULL DEFAULT '0', + \"cat\" text NOT NULL DEFAULT '', + \"k\" text NOT NULL DEFAULT '', + \"v\" text NOT NULL DEFAULT '', + PRIMARY_KEY(\"id\") +) "); +$r2 = q("create index \"iconfig_iid\" on iconfig (\"iid\") ");; +$r3 = q("create index \"iconfig_cat\" on iconfig (\"cat\") "); +$r4 = q("create index \"iconfig_k\" on iconfig (\"k\") "); + $r = $r1 && $r2 && $r3 && $r4; + } + else { + $r = q("CREATE TABLE IF NOT EXISTS `iconfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `iid` int(11) NOT NULL DEFAULT '0', + `cat` char(255) NOT NULL DEFAULT '', + `k` char(255) NOT NULL DEFAULT '', + `v` mediumtext NOT NULL, + PRIMARY KEY (`id`), + KEY `iid` (`iid`), + KEY `cat` (`cat`), + KEY `k` (`k`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + } + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1162.php b/Zotlabs/Update/_1162.php new file mode 100644 index 000000000..683ea9802 --- /dev/null +++ b/Zotlabs/Update/_1162.php @@ -0,0 +1,19 @@ +<?php + +namespace Zotlabs\Update; + +class _1162 { +function run() { + $r1 = q("alter table iconfig add sharing int not null default '0' "); + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) + $r2 = q("create index \"iconfig_sharing\" on iconfig (\"sharing\") "); + else + $r2 = q("alter table iconfig add index ( sharing ) "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1163.php b/Zotlabs/Update/_1163.php new file mode 100644 index 000000000..376447aea --- /dev/null +++ b/Zotlabs/Update/_1163.php @@ -0,0 +1,22 @@ +<?php + +namespace Zotlabs\Update; + +class _1163 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("alter table channel add channel_moved text not null default '' "); + $r2 = q("create index \"channel_channel_moved\" on channel (\"channel_moved\") "); + } + else { + $r1 = q("alter table channel add channel_moved char(255) not null default '' "); + $r2 = q("alter table channel add index ( channel_moved ) "); + } + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1164.php b/Zotlabs/Update/_1164.php new file mode 100644 index 000000000..bad9193d1 --- /dev/null +++ b/Zotlabs/Update/_1164.php @@ -0,0 +1,45 @@ +<?php + +namespace Zotlabs\Update; + +class _1164 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("CREATE TABLE \"abconfig\" ( + \"id\" serial NOT NULL, + \"chan\" text NOT NULL, + \"xchan\" text NOT NULL, + \"cat\" text NOT NULL, + \"k\" text NOT NULL, + \"v\" text NOT NULL, + PRIMARY KEY (\"id\") "); + $r2 = q("create index \"abconfig_chan\" on abconfig (\"chan\") "); + $r3 = q("create index \"abconfig_xchan\" on abconfig (\"xchan\") "); + $r4 = q("create index \"abconfig_cat\" on abconfig (\"cat\") "); + $r5 = q("create index \"abconfig_k\" on abconfig (\"k\") "); + $r = $r1 && $r2 && $r3 && $r4 && $r5; + } + else { + $r = q("CREATE TABLE IF NOT EXISTS `abconfig` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `chan` char(255) NOT NULL DEFAULT '', + `xchan` char(255) NOT NULL DEFAULT '', + `cat` char(255) NOT NULL DEFAULT '', + `k` char(255) NOT NULL DEFAULT '', + `v` mediumtext NOT NULL, + PRIMARY KEY (`id`), + KEY `chan` (`chan`), + KEY `xchan` (`xchan`), + KEY `cat` (`cat`), + KEY `k` (`k`) + ) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + } + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1165.php b/Zotlabs/Update/_1165.php new file mode 100644 index 000000000..fcea38dc8 --- /dev/null +++ b/Zotlabs/Update/_1165.php @@ -0,0 +1,20 @@ +<?php + +namespace Zotlabs\Update; + +class _1165 { +function run() { + + $r1 = q("alter table hook add hook_version int not null default '0' "); + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) + $r2 = q("create index \"hook_version_idx\" on hook (\"hook_version\") "); + else + $r2 = q("alter table hook add index ( hook_version ) "); + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1166.php b/Zotlabs/Update/_1166.php new file mode 100644 index 000000000..e320d5bc0 --- /dev/null +++ b/Zotlabs/Update/_1166.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1166 { +function run() { + + $r = q("alter table source add src_tag text not null default '' "); + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1167.php b/Zotlabs/Update/_1167.php new file mode 100644 index 000000000..b5510a21f --- /dev/null +++ b/Zotlabs/Update/_1167.php @@ -0,0 +1,26 @@ +<?php + +namespace Zotlabs\Update; + +class _1167 { +function run() { + + $r1 = q("alter table app add app_deleted int not null default '0' "); + $r2 = q("alter table app add app_system int not null default '0' "); + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r3 = q("create index \"app_deleted_idx\" on app (\"app_deleted\") "); + $r4 = q("create index \"app_system_idx\" on app (\"app_system\") "); + } + else { + $r3 = q("alter table app add index ( app_deleted ) "); + $r4 = q("alter table app add index ( app_system ) "); + } + + if($r1 && $r2 && $r3 && $r4) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1168.php b/Zotlabs/Update/_1168.php new file mode 100644 index 000000000..cf7d2689a --- /dev/null +++ b/Zotlabs/Update/_1168.php @@ -0,0 +1,23 @@ +<?php + +namespace Zotlabs\Update; + +class _1168 { +function run() { + + $r1 = q("alter table obj add obj_quantity int not null default '0' "); + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r2 = q("create index \"obj_quantity_idx\" on obj (\"obj_quantity\") "); + } + else { + $r2 = q("alter table obj add index ( obj_quantity ) "); + } + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1169.php b/Zotlabs/Update/_1169.php new file mode 100644 index 000000000..cfe4dbcd8 --- /dev/null +++ b/Zotlabs/Update/_1169.php @@ -0,0 +1,27 @@ +<?php + +namespace Zotlabs\Update; + +class _1169 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("ALTER TABLE `addon` CHANGE `timestamp` `tstamp` numeric( 20 ) UNSIGNED NOT NULL DEFAULT '0' "); + $r2 = q("ALTER TABLE `addon` CHANGE `name` `aname` text NOT NULL DEFAULT '' "); + $r3 = q("ALTER TABLE `hook` CHANGE `function` `fn` text NOT NULL DEFAULT '' "); + + } + else { + $r1 = q("ALTER TABLE `addon` CHANGE `timestamp` `tstamp` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT '0' "); + $r2 = q("ALTER TABLE `addon` CHANGE `name` `aname` CHAR(255) NOT NULL DEFAULT '' "); + $r3 = q("ALTER TABLE `hook` CHANGE `function` `fn` CHAR(255) NOT NULL DEFAULT '' "); + } + + if($r1 && $r2 && $r3) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1170.php b/Zotlabs/Update/_1170.php new file mode 100644 index 000000000..215aeebc7 --- /dev/null +++ b/Zotlabs/Update/_1170.php @@ -0,0 +1,21 @@ +<?php + +namespace Zotlabs\Update; + +class _1170 { +function run() { + + $r1 = q("drop table fcontact"); + $r2 = q("drop table ffinder"); + $r3 = q("drop table fserver"); + $r4 = q("drop table fsuggest"); + $r5 = q("drop table spam"); + + if($r1 && $r2 && $r3 && $r4 && $r5) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1171.php b/Zotlabs/Update/_1171.php new file mode 100644 index 000000000..5cbf0ca21 --- /dev/null +++ b/Zotlabs/Update/_1171.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1171 { +function run() { + + $r1 = q("ALTER TABLE verify CHANGE `type` `vtype` varchar(32) NOT NULL DEFAULT '' "); + $r2 = q("ALTER TABLE tokens CHANGE `scope` `auth_scope` varchar(512) NOT NULL DEFAULT '' "); + $r3 = q("ALTER TABLE auth_codes CHANGE `scope` `auth_scope` varchar(512) NOT NULL DEFAULT '' "); + $r4 = q("ALTER TABLE clients CHANGE `name` `clname` TEXT "); + $r5 = q("ALTER TABLE session CHANGE `data` `sess_data` TEXT NOT NULL "); + $r6 = q("ALTER TABLE register CHANGE `language` `lang` varchar(16) NOT NULL DEFAULT '' "); + + if($r1 && $r2 && $r3 && $r4 && $r5 && $r6) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + + + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1172.php b/Zotlabs/Update/_1172.php new file mode 100644 index 000000000..117e87fa1 --- /dev/null +++ b/Zotlabs/Update/_1172.php @@ -0,0 +1,29 @@ +<?php + +namespace Zotlabs\Update; + +class _1172 { +function run() { + + $r1 = q("ALTER TABLE term CHANGE `type` `ttype` int(3) NOT NULL DEFAULT '0' "); + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r2 = q("ALTER TABLE groups CHANGE `name` `gname` TEXT NOT NULL "); + $r3 = q("ALTER TABLE profile CHANGE `name` `fullname` TEXT NOT NULL "); + $r4 = q("ALTER TABLE profile CHANGE `with` `partner` TEXT NOT NULL "); + $r5 = q("ALTER TABLE profile CHANGE `work` `employment` TEXT NOT NULL "); + } + else { + $r2 = q("ALTER TABLE groups CHANGE `name` `gname` char(255) NOT NULL DEFAULT '' "); + $r3 = q("ALTER TABLE profile CHANGE `name` `fullname` char(255) NOT NULL DEFAULT '' "); + $r4 = q("ALTER TABLE profile CHANGE `with` `partner` char(255) NOT NULL DEFAULT '' "); + $r5 = q("ALTER TABLE profile CHANGE `work` `employment` TEXT NOT NULL "); + } + if($r1 && $r2 && $r3 && $r4 && $r5) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1173.php b/Zotlabs/Update/_1173.php new file mode 100644 index 000000000..7c0d76c73 --- /dev/null +++ b/Zotlabs/Update/_1173.php @@ -0,0 +1,27 @@ +<?php + +namespace Zotlabs\Update; + +class _1173 { +function run() { + + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("ALTER TABLE notify CHANGE `name` `xname` TEXT NOT NULL "); + $r2 = q("ALTER TABLE notify CHANGE `date` `created` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' "); + $r3 = q("ALTER TABLE notify CHANGE `type` `ntype` numeric(3) NOT NULL DEFAULT '0' "); + } + else { + $r1 = q("ALTER TABLE notify CHANGE `name` `xname` char(255) NOT NULL DEFAULT '' "); + $r2 = q("ALTER TABLE notify CHANGE `date` `created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' "); + $r3 = q("ALTER TABLE notify CHANGE `type` `ntype` smallint(3) NOT NULL DEFAULT '0' "); + } + + if($r1 && $r2 && $r3) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1174.php b/Zotlabs/Update/_1174.php new file mode 100644 index 000000000..0d68b2d65 --- /dev/null +++ b/Zotlabs/Update/_1174.php @@ -0,0 +1,32 @@ +<?php + +namespace Zotlabs\Update; + +class _1174 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("ALTER TABLE event CHANGE `type` `etype` varchar(255) NOT NULL DEFAULT '' "); + $r2 = q("ALTER TABLE event CHANGE `start` `dtstart` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' "); + $r3 = q("ALTER TABLE event CHANGE `finish` `dtend` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' "); + $r4 = q("ALTER TABLE event CHANGE `ignore` `dismissed` numeric(1) NOT NULL DEFAULT '0' "); + $r5 = q("ALTER TABLE attach CHANGE `data` `content` bytea NOT NULL "); + $r6 = q("ALTER TABLE photo CHANGE `data` `content` bytea NOT NULL "); + } + else { + $r1 = q("ALTER TABLE event CHANGE `type` `etype` char(255) NOT NULL DEFAULT '' "); + $r2 = q("ALTER TABLE event CHANGE `start` `dtstart` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' "); + $r3 = q("ALTER TABLE event CHANGE `finish` `dtend` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' "); + $r4 = q("ALTER TABLE event CHANGE `ignore` `dismissed` tinyint(1) NOT NULL DEFAULT '0' "); + $r5 = q("ALTER TABLE attach CHANGE `data` `content` longblob NOT NULL "); + $r6 = q("ALTER TABLE photo CHANGE `data` `content` mediumblob NOT NULL "); + } + + if($r1 && $r2 && $r3 && $r4 && $r5 && $r6) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1175.php b/Zotlabs/Update/_1175.php new file mode 100644 index 000000000..188586084 --- /dev/null +++ b/Zotlabs/Update/_1175.php @@ -0,0 +1,31 @@ +<?php + +namespace Zotlabs\Update; + +class _1175 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("ALTER TABLE item CHANGE `object` `obj` text NOT NULL"); + $r2 = q("ALTER TABLE photo CHANGE `size` `filesize` bigint NOT NULL DEFAULT '0' "); + $r3 = q("ALTER TABLE photo CHANGE `scale` `imgscale` numeric(3) NOT NULL DEFAULT '0' "); + $r4 = q("ALTER TABLE photo CHANGE `type` `mimetype` varchar(128) NOT NULL DEFAULT 'image/jpeg' "); + + } + else { + $r1 = q("ALTER TABLE item CHANGE `object` `obj` text NOT NULL"); + $r2 = q("ALTER TABLE photo CHANGE `size` `filesize` int(10) unsigned NOT NULL DEFAULT '0' "); + $r3 = q("ALTER TABLE photo CHANGE `scale` `imgscale` tinyint(3) unsigned NOT NULL DEFAULT '0' "); + $r4 = q("ALTER TABLE photo CHANGE `type` `mimetype` char(128) NOT NULL DEFAULT 'image/jpeg' "); + + } + + if($r1 && $r2 && $r3 && $r4) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1176.php b/Zotlabs/Update/_1176.php new file mode 100644 index 000000000..8c02ee436 --- /dev/null +++ b/Zotlabs/Update/_1176.php @@ -0,0 +1,19 @@ +<?php + +namespace Zotlabs\Update; + +class _1176 { +function run() { + + $r = q("select * from item_id where true"); + if($r) { + foreach($r as $rr) { + \Zotlabs\Lib\IConfig::Set($rr['iid'],'system',$rr['service'],$rr['sid'],true); + } + } + return UPDATE_SUCCESS; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1177.php b/Zotlabs/Update/_1177.php new file mode 100644 index 000000000..119e48ee8 --- /dev/null +++ b/Zotlabs/Update/_1177.php @@ -0,0 +1,66 @@ +<?php + +namespace Zotlabs\Update; + +class _1177 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("alter table event add cal_id bigint NOT NULL DEFAULT '0'"); + $r2 = q("create index \"event_cal_idx\" on event (\"cal_id\") "); + + $r3 = q("CREATE TABLE \"cal\" ( + \"cal_id\" serial NOT NULL, + \"cal_aid\" bigint NOT NULL DEFAULT '0', + \"cal_uid\" bigint NOT NULL DEFAULT '0', + \"cal_hash\" text NOT NULL, + \"cal_name\" text NOT NULL, + \"uri\" text NOT NULL, + \"logname\" text NOT NULL, + \"pass\" text NOT NULL, + \"ctag\" text NOT NULL, + \"synctoken\" text NOT NULL, + \"cal_types\" text NOT NULL, + PRIMARY KEY (\"cal_id\") "); + $r4 = q("create index \"cal_hash_idx\" on cal (\"cal_hash\") "); + $r5 = q("create index \"cal_name_idx\" on cal (\"cal_name\") "); + $r6 = q("create index \"cal_types_idx\" on cal (\"cal_types\") "); + $r7 = q("create index \"cal_aid_idx\" on cal (\"cal_aid\") "); + $r8 = q("create index \"cal_uid_idx\" on cal (\"cal_uid\") "); + $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8; + } + else { + $r1 = q("alter table event add cal_id int(10) unsigned NOT NULL DEFAULT '0', + add index ( cal_id ) "); + + $r2 = q("CREATE TABLE IF NOT EXISTS `cal` ( + `cal_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `cal_aid` int(10) unsigned NOT NULL DEFAULT '0', + `cal_uid` int(10) unsigned NOT NULL DEFAULT '0', + `cal_hash` varchar(255) NOT NULL DEFAULT '', + `cal_name` varchar(255) NOT NULL DEFAULT '', + `uri` varchar(255) NOT NULL DEFAULT '', + `logname` varchar(255) NOT NULL DEFAULT '', + `pass` varchar(255) NOT NULL DEFAULT '', + `ctag` varchar(255) NOT NULL DEFAULT '', + `synctoken` varchar(255) NOT NULL DEFAULT '', + `cal_types` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`cal_id`), + KEY `cal_aid` (`cal_aid`), + KEY `cal_uid` (`cal_uid`), + KEY `cal_hash` (`cal_hash`), + KEY `cal_name` (`cal_name`), + KEY `cal_types` (`cal_types`) + ) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + $r = $r1 && $r2; + } + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1178.php b/Zotlabs/Update/_1178.php new file mode 100644 index 000000000..97c42a16d --- /dev/null +++ b/Zotlabs/Update/_1178.php @@ -0,0 +1,42 @@ +<?php + +namespace Zotlabs\Update; + +class _1178 { +function run() { + + $c2 = null; + + $c1 = q("SELECT channel_id, channel_hash from channel where true"); + if($c1) { + $c2 = q("SELECT id, chan from abconfig where true"); + if($c2) { + for($x = 0; $x < count($c2); $x ++) { + foreach($c1 as $c) { + if($c['channel_hash'] == $c2[$x]['chan']) { + $c2[$x]['chan'] = $c['channel_id']; + break; + } + } + } + } + } + + $r1 = q("ALTER TABLE abconfig CHANGE chan chan int(10) unsigned NOT NULL DEFAULT '0' "); + + if($c2) { + foreach($c2 as $c) { + q("UPDATE abconfig SET chan = %d where id = %d", + intval($c['chan']), + intval($c['id']) + ); + } + } + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1179.php b/Zotlabs/Update/_1179.php new file mode 100644 index 000000000..44227c8d3 --- /dev/null +++ b/Zotlabs/Update/_1179.php @@ -0,0 +1,49 @@ +<?php + +namespace Zotlabs\Update; + +class _1179 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("CREATE TABLE atoken ( + atoken_id serial NOT NULL, + atoken_aid bigint NOT NULL DEFAULT 0, + atoken_uid bigint NOT NULL DEFAULT 0, + atoken_name varchar(255) NOT NULL DEFAULT '', + atoken_token varchar(255) NOT NULL DEFAULT '', + atoken_expires timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', + PRIMARY KEY (atoken_id)) "); + $r2 = q("create index atoken_aid on atoken (atoken_aid)"); + $r3 = q("create index atoken_uid on atoken (atoken_uid)"); + $r4 = q("create index atoken_name on atoken (atoken_name)"); + $r5 = q("create index atoken_token on atoken (atoken_token)"); + $r6 = q("create index atoken_expires on atoken (atoken_expires)"); + + $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6; + + } + else { + $r = q("CREATE TABLE IF NOT EXISTS `atoken` ( + `atoken_id` int(11) NOT NULL AUTO_INCREMENT, + `atoken_aid` int(11) NOT NULL DEFAULT 0, + `atoken_uid` int(11) NOT NULL DEFAULT 0, + `atoken_name` char(255) NOT NULL DEFAULT '', + `atoken_token` char(255) NOT NULL DEFAULT '', + `atoken_expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', + PRIMARY KEY (`atoken_id`), + KEY `atoken_aid` (`atoken_aid`), + KEY `atoken_uid` (`atoken_uid`), + KEY `atoken_name` (`atoken_name`), + KEY `atoken_token` (`atoken_token`), + KEY `atoken_expires` (`atoken_expires`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + } + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1180.php b/Zotlabs/Update/_1180.php new file mode 100644 index 000000000..f02f46231 --- /dev/null +++ b/Zotlabs/Update/_1180.php @@ -0,0 +1,32 @@ +<?php + +namespace Zotlabs\Update; + +class _1180 { +function run() { + + require_once('include/perm_upgrade.php'); + + $r1 = q("select * from channel where true"); + if($r1) { + foreach($r1 as $rr) { + perm_limits_upgrade($rr); + autoperms_upgrade($rr); + } + } + + $r2 = q("select * from abook where true"); + if($r2) { + foreach($r2 as $rr) { + perm_abook_upgrade($rr); + } + } + + $r = $r1 && $r2; + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1181.php b/Zotlabs/Update/_1181.php new file mode 100644 index 000000000..fc2d94b6b --- /dev/null +++ b/Zotlabs/Update/_1181.php @@ -0,0 +1,14 @@ +<?php + +namespace Zotlabs\Update; + +class _1181 { +function run() { + if(\Zotlabs\Lib\System::get_server_role() == 'pro') { + q("update account set account_level = 5 where true"); + } + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1182.php b/Zotlabs/Update/_1182.php new file mode 100644 index 000000000..d652f432e --- /dev/null +++ b/Zotlabs/Update/_1182.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1182 { +function run() { + + $r1 = q("alter table site add site_version varchar(32) not null default '' "); + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1183.php b/Zotlabs/Update/_1183.php new file mode 100644 index 000000000..6e9f89271 --- /dev/null +++ b/Zotlabs/Update/_1183.php @@ -0,0 +1,25 @@ +<?php + +namespace Zotlabs\Update; + +class _1183 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("alter table hook ALTER COLUMN priority TYPE smallint"); + $r2 = q("alter table hook ALTER COLUMN priority SET NOT NULL"); + $r3 = q("alter table hook ALTER COLUMN priority SET DEFAULT '0'"); + $r1 = $r1 && $r2 && $r3; + } + else { + $r1 = q("alter table hook CHANGE priority priority smallint NOT NULL DEFAULT '0' "); + } + $r2 = q("create index priority_idx on hook (priority)"); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1184.php b/Zotlabs/Update/_1184.php new file mode 100644 index 000000000..e8c37888c --- /dev/null +++ b/Zotlabs/Update/_1184.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1184 { +function run() { + + $r1 = q("alter table site add site_crypto text not null default '' "); + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1185.php b/Zotlabs/Update/_1185.php new file mode 100644 index 000000000..c7f4f1bd4 --- /dev/null +++ b/Zotlabs/Update/_1185.php @@ -0,0 +1,16 @@ +<?php + +namespace Zotlabs\Update; + +class _1185 { +function run() { + + $r1 = q("alter table app add app_plugin text not null default '' "); + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1186.php b/Zotlabs/Update/_1186.php new file mode 100644 index 000000000..a9c4f0e36 --- /dev/null +++ b/Zotlabs/Update/_1186.php @@ -0,0 +1,18 @@ +<?php + +namespace Zotlabs\Update; + +class _1186 { +function run() { + + $r1 = q("alter table profile add profile_vcard text not null"); + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1187.php b/Zotlabs/Update/_1187.php new file mode 100644 index 000000000..0fce5aa05 --- /dev/null +++ b/Zotlabs/Update/_1187.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1187 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("alter table outq add outq_scheduled timestamp not null default '0001-01-01 00:00:00' "); + } + else { + $r1 = q("alter table outq add outq_scheduled datetime not null default '0001-01-01 00:00:00' "); + } + $r2 = q("create index outq_scheduled_idx on outq (outq_scheduled)"); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1188.php b/Zotlabs/Update/_1188.php new file mode 100644 index 000000000..eb0335aab --- /dev/null +++ b/Zotlabs/Update/_1188.php @@ -0,0 +1,18 @@ +<?php + +namespace Zotlabs\Update; + +class _1188 { +function run() { + + $r1 = q("alter table channel add channel_password varchar(255) not null default '' "); + $r2 = q("alter table channel add channel_salt varchar(255) not null default '' "); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1189.php b/Zotlabs/Update/_1189.php new file mode 100644 index 000000000..5cd180fbd --- /dev/null +++ b/Zotlabs/Update/_1189.php @@ -0,0 +1,23 @@ +<?php + +namespace Zotlabs\Update; + +class _1189 { +function run() { + + $r1 = q("alter table mail add mail_mimetype varchar(64) not null default 'text/bbcode' "); + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r2 = q("alter table mail add mail_raw smallint not null default 0 "); + } + else { + $r2 = q("alter table mail add mail_raw tinyint(4) not null default 0 "); + } + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1190.php b/Zotlabs/Update/_1190.php new file mode 100644 index 000000000..9321b82b8 --- /dev/null +++ b/Zotlabs/Update/_1190.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1190 { +function run() { + $r1 = q("alter table abook add abook_not_here smallint not null default 0 "); + + $r2 = q("create index abook_not_here on abook (abook_not_here)"); + + if($r1 && $r2) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1191.php b/Zotlabs/Update/_1191.php new file mode 100644 index 000000000..015b9a2ca --- /dev/null +++ b/Zotlabs/Update/_1191.php @@ -0,0 +1,425 @@ +<?php + +namespace Zotlabs\Update; + +class _1191 { +function run() { + + $r = q("SELECT 1 FROM principals LIMIT 1"); + + if($r !== false) { + return UPDATE_SUCCESS; + } + else { + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("CREATE TABLE addressbooks ( + id SERIAL NOT NULL, + principaluri VARCHAR(255), + displayname VARCHAR(255), + uri VARCHAR(200), + description TEXT, + synctoken INTEGER NOT NULL DEFAULT 1 + );" + ); + + $r2 = q("ALTER TABLE ONLY addressbooks ADD CONSTRAINT addressbooks_pkey PRIMARY KEY (id);"); + + $r3 = q("CREATE UNIQUE INDEX addressbooks_ukey ON addressbooks USING btree (principaluri, uri);"); + + $r4 = q("CREATE TABLE cards ( + id SERIAL NOT NULL, + addressbookid INTEGER NOT NULL, + carddata BYTEA, + uri VARCHAR(200), + lastmodified INTEGER, + etag VARCHAR(32), + size INTEGER NOT NULL + );" + ); + + $r5 = q("ALTER TABLE ONLY cards ADD CONSTRAINT cards_pkey PRIMARY KEY (id);"); + + $r6 = q("CREATE UNIQUE INDEX cards_ukey ON cards USING btree (addressbookid, uri);"); + + $r7 = q("CREATE TABLE addressbookchanges ( + id SERIAL NOT NULL, + uri VARCHAR(200) NOT NULL, + synctoken INTEGER NOT NULL, + addressbookid INTEGER NOT NULL, + operation SMALLINT NOT NULL + );" + ); + + $r8 = q("ALTER TABLE ONLY addressbookchanges ADD CONSTRAINT addressbookchanges_pkey PRIMARY KEY (id);"); + + $r9 = q("CREATE INDEX addressbookchanges_addressbookid_synctoken_ix ON addressbookchanges USING btree (addressbookid, synctoken);"); + + $r10 = q("CREATE TABLE calendarobjects ( + id SERIAL NOT NULL, + calendardata BYTEA, + uri VARCHAR(200), + calendarid INTEGER NOT NULL, + lastmodified INTEGER, + etag VARCHAR(32), + size INTEGER NOT NULL, + componenttype VARCHAR(8), + firstoccurence INTEGER, + lastoccurence INTEGER, + uid VARCHAR(200) + );" + ); + + $r11 = q("ALTER TABLE ONLY calendarobjects ADD CONSTRAINT calendarobjects_pkey PRIMARY KEY (id);"); + + $r12 = q("CREATE UNIQUE INDEX calendarobjects_ukey ON calendarobjects USING btree (calendarid, uri);"); + + $r13 = q("CREATE TABLE calendars ( + id SERIAL NOT NULL, + synctoken INTEGER NOT NULL DEFAULT 1, + components VARCHAR(21) + );" + ); + + $r14 = q("ALTER TABLE ONLY calendars ADD CONSTRAINT calendars_pkey PRIMARY KEY (id);"); + + $r15 = q("CREATE TABLE calendarinstances ( + id SERIAL NOT NULL, + calendarid INTEGER NOT NULL, + principaluri VARCHAR(100), + access SMALLINT NOT NULL DEFAULT '1', -- '1 = owner, 2 = read, 3 = readwrite' + displayname VARCHAR(100), + uri VARCHAR(200), + description TEXT, + calendarorder INTEGER NOT NULL DEFAULT 0, + calendarcolor VARCHAR(10), + timezone TEXT, + transparent SMALLINT NOT NULL DEFAULT '0', + share_href VARCHAR(100), + share_displayname VARCHAR(100), + share_invitestatus SMALLINT NOT NULL DEFAULT '2' -- '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid' + );" + ); + + $r16 = q("ALTER TABLE ONLY calendarinstances ADD CONSTRAINT calendarinstances_pkey PRIMARY KEY (id);"); + + $r17 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_uri ON calendarinstances USING btree (principaluri, uri);"); + + $r18 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_calendarid ON calendarinstances USING btree (principaluri, calendarid);"); + + $r19 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_share_href ON calendarinstances USING btree (principaluri, share_href);"); + + $r20 = q("CREATE TABLE calendarsubscriptions ( + id SERIAL NOT NULL, + uri VARCHAR(200) NOT NULL, + principaluri VARCHAR(100) NOT NULL, + source TEXT, + displayname VARCHAR(100), + refreshrate VARCHAR(10), + calendarorder INTEGER NOT NULL DEFAULT 0, + calendarcolor VARCHAR(10), + striptodos SMALLINT NULL, + stripalarms SMALLINT NULL, + stripattachments SMALLINT NULL, + lastmodified INTEGER + );" + ); + + $r21 = q("ALTER TABLE ONLY calendarsubscriptions ADD CONSTRAINT calendarsubscriptions_pkey PRIMARY KEY (id);"); + + $r22 = q("CREATE UNIQUE INDEX calendarsubscriptions_ukey ON calendarsubscriptions USING btree (principaluri, uri);"); + + $r23 = q("CREATE TABLE calendarchanges ( + id SERIAL NOT NULL, + uri VARCHAR(200) NOT NULL, + synctoken INTEGER NOT NULL, + calendarid INTEGER NOT NULL, + operation SMALLINT NOT NULL DEFAULT 0 + );" + ); + + $r24 = q("ALTER TABLE ONLY calendarchanges ADD CONSTRAINT calendarchanges_pkey PRIMARY KEY (id);"); + + $r25 = q("CREATE INDEX calendarchanges_calendarid_synctoken_ix ON calendarchanges USING btree (calendarid, synctoken);"); + + $r26 = q("CREATE TABLE schedulingobjects ( + id SERIAL NOT NULL, + principaluri VARCHAR(255), + calendardata BYTEA, + uri VARCHAR(200), + lastmodified INTEGER, + etag VARCHAR(32), + size INTEGER NOT NULL + );" + ); + + $r27 = q("CREATE TABLE locks ( + id SERIAL NOT NULL, + owner VARCHAR(100), + timeout INTEGER, + created INTEGER, + token VARCHAR(100), + scope SMALLINT, + depth SMALLINT, + uri TEXT + );" + ); + + $r28 = q("ALTER TABLE ONLY locks ADD CONSTRAINT locks_pkey PRIMARY KEY (id);"); + + $r29 = q("CREATE INDEX locks_token_ix ON locks USING btree (token);"); + + $r30 = q("CREATE INDEX locks_uri_ix ON locks USING btree (uri);"); + + $r31 = q("CREATE TABLE principals ( + id SERIAL NOT NULL, + uri VARCHAR(200) NOT NULL, + email VARCHAR(80), + displayname VARCHAR(80) + );" + ); + + $r32 = q("ALTER TABLE ONLY principals ADD CONSTRAINT principals_pkey PRIMARY KEY (id);"); + + $r33 = q("CREATE UNIQUE INDEX principals_ukey ON principals USING btree (uri);"); + + $r34 = q("CREATE TABLE groupmembers ( + id SERIAL NOT NULL, + principal_id INTEGER NOT NULL, + member_id INTEGER NOT NULL + );" + ); + + $r35 = q("ALTER TABLE ONLY groupmembers ADD CONSTRAINT groupmembers_pkey PRIMARY KEY (id);"); + + $r36 = q("CREATE UNIQUE INDEX groupmembers_ukey ON groupmembers USING btree (principal_id, member_id);"); + + $r37 = q("CREATE TABLE propertystorage ( + id SERIAL NOT NULL, + path VARCHAR(1024) NOT NULL, + name VARCHAR(100) NOT NULL, + valuetype INT, + value BYTEA + );" + ); + + $r38 = q("ALTER TABLE ONLY propertystorage ADD CONSTRAINT propertystorage_pkey PRIMARY KEY (id);"); + + $r39 = q("CREATE UNIQUE INDEX propertystorage_ukey ON propertystorage (path, name);"); + + $r40 = q("CREATE TABLE users ( + id SERIAL NOT NULL, + username VARCHAR(50), + digesta1 VARCHAR(32) + );" + ); + + $r41 = q("ALTER TABLE ONLY users ADD CONSTRAINT users_pkey PRIMARY KEY (id);"); + + $r42 = q("CREATE UNIQUE INDEX users_ukey ON users USING btree (username);"); + + if( + $r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8 && $r9 && $r10 + && $r11 && $r12 && $r13 && $r14 && $r15 && $r16 && $r17 && $r18 && $r19 && $r20 + && $r21 && $r22 && $r23 && $r24 && $r25 && $r26 && $r27 && $r28 && $r29 && $r30 + && $r31 && $r32 && $r33 && $r34 && $r35 && $r36 && $r37 && $r38 && $r39 && $r40 + && $r41 && $r42 + ) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + } + else { + $r1 = q("CREATE TABLE if not exists addressbooks ( + id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + principaluri VARBINARY(255), + displayname VARCHAR(255), + uri VARBINARY(200), + description TEXT, + synctoken INT(11) UNSIGNED NOT NULL DEFAULT '1', + UNIQUE(principaluri(100), uri(100)) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r2 = q("CREATE TABLE if not exists cards ( + id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + addressbookid INT(11) UNSIGNED NOT NULL, + carddata MEDIUMBLOB, + uri VARBINARY(200), + lastmodified INT(11) UNSIGNED, + etag VARBINARY(32), + size INT(11) UNSIGNED NOT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r3 = q("CREATE TABLE if not exists addressbookchanges ( + id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + uri VARBINARY(200) NOT NULL, + synctoken INT(11) UNSIGNED NOT NULL, + addressbookid INT(11) UNSIGNED NOT NULL, + operation TINYINT(1) NOT NULL, + INDEX addressbookid_synctoken (addressbookid, synctoken) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r4 = q("CREATE TABLE if not exists calendarobjects ( + id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + calendardata MEDIUMBLOB, + uri VARBINARY(200), + calendarid INTEGER UNSIGNED NOT NULL, + lastmodified INT(11) UNSIGNED, + etag VARBINARY(32), + size INT(11) UNSIGNED NOT NULL, + componenttype VARBINARY(8), + firstoccurence INT(11) UNSIGNED, + lastoccurence INT(11) UNSIGNED, + uid VARBINARY(200), + UNIQUE(calendarid, uri), + INDEX calendarid_time (calendarid, firstoccurence) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r5 = q("CREATE TABLE if not exists calendars ( + id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + synctoken INTEGER UNSIGNED NOT NULL DEFAULT '1', + components VARBINARY(21) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r6 = q("CREATE TABLE if not exists calendarinstances ( + id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + calendarid INTEGER UNSIGNED NOT NULL, + principaluri VARBINARY(100), + access TINYINT(1) NOT NULL DEFAULT '1' COMMENT '1 = owner, 2 = read, 3 = readwrite', + displayname VARCHAR(100), + uri VARBINARY(200), + description TEXT, + calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', + calendarcolor VARBINARY(10), + timezone TEXT, + transparent TINYINT(1) NOT NULL DEFAULT '0', + share_href VARBINARY(100), + share_displayname VARCHAR(100), + share_invitestatus TINYINT(1) NOT NULL DEFAULT '2' COMMENT '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid', + UNIQUE(principaluri, uri), + UNIQUE(calendarid, principaluri), + UNIQUE(calendarid, share_href) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r7 = q("CREATE TABLE if not exists calendarchanges ( + id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + uri VARBINARY(200) NOT NULL, + synctoken INT(11) UNSIGNED NOT NULL, + calendarid INT(11) UNSIGNED NOT NULL, + operation TINYINT(1) NOT NULL, + INDEX calendarid_synctoken (calendarid, synctoken) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r8 = q("CREATE TABLE if not exists calendarsubscriptions ( + id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + uri VARBINARY(200) NOT NULL, + principaluri VARBINARY(100) NOT NULL, + source TEXT, + displayname VARCHAR(100), + refreshrate VARCHAR(10), + calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', + calendarcolor VARBINARY(10), + striptodos TINYINT(1) NULL, + stripalarms TINYINT(1) NULL, + stripattachments TINYINT(1) NULL, + lastmodified INT(11) UNSIGNED, + UNIQUE(principaluri, uri) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r9 = q("CREATE TABLE if not exists schedulingobjects ( + id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + principaluri VARBINARY(255), + calendardata MEDIUMBLOB, + uri VARBINARY(200), + lastmodified INT(11) UNSIGNED, + etag VARBINARY(32), + size INT(11) UNSIGNED NOT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r10 = q("CREATE TABLE if not exists locks ( + id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + owner VARCHAR(100), + timeout INTEGER UNSIGNED, + created INTEGER, + token VARBINARY(100), + scope TINYINT, + depth TINYINT, + uri VARBINARY(1000), + INDEX(token), + INDEX(uri(100)) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r11 = q("CREATE TABLE if not exists principals ( + id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + uri VARBINARY(200) NOT NULL, + email VARBINARY(80), + displayname VARCHAR(80), + UNIQUE(uri) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r12 = q("CREATE TABLE if not exists groupmembers ( + id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + principal_id INTEGER UNSIGNED NOT NULL, + member_id INTEGER UNSIGNED NOT NULL, + UNIQUE(principal_id, member_id) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r13 = q("CREATE TABLE if not exists propertystorage ( + id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + path VARBINARY(1024) NOT NULL, + name VARBINARY(100) NOT NULL, + valuetype INT UNSIGNED, + value MEDIUMBLOB + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r14 = q("CREATE UNIQUE INDEX path_property ON propertystorage (path(600), name(100));"); + + $r15 = q("CREATE TABLE if not exists users ( + id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + username VARBINARY(50), + digesta1 VARBINARY(32), + UNIQUE(username) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + $r16 = q("CREATE TABLE if not exists calendarinstances ( + id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + calendarid INTEGER UNSIGNED NOT NULL, + principaluri VARBINARY(100), + access TINYINT(1) NOT NULL DEFAULT '1' COMMENT '1 = owner, 2 = read, 3 = readwrite', + displayname VARCHAR(100), + uri VARBINARY(200), + description TEXT, + calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', + calendarcolor VARBINARY(10), + timezone TEXT, + transparent TINYINT(1) NOT NULL DEFAULT '0', + share_href VARBINARY(100), + share_displayname VARCHAR(100), + share_invitestatus TINYINT(1) NOT NULL DEFAULT '2' COMMENT '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid', + UNIQUE(principaluri, uri), + UNIQUE(calendarid, principaluri), + UNIQUE(calendarid, share_href) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" + ); + + if($r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8 && $r9 && $r10 && $r11 && $r12 && $r13 && $r14 && $r15 && $r16) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + } + } +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1192.php b/Zotlabs/Update/_1192.php new file mode 100644 index 000000000..f2445da05 --- /dev/null +++ b/Zotlabs/Update/_1192.php @@ -0,0 +1,21 @@ +<?php + +namespace Zotlabs\Update; + +class _1192 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("CREATE INDEX item_obj_type ON item (obj_type)"); + } + else { + $r1 = q("ALTER TABLE item ADD INDEX (obj_type)"); + } + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1193.php b/Zotlabs/Update/_1193.php new file mode 100644 index 000000000..267e16da1 --- /dev/null +++ b/Zotlabs/Update/_1193.php @@ -0,0 +1,22 @@ +<?php + +namespace Zotlabs\Update; + +class _1193 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("CREATE INDEX item_uid_unseen ON item (uid, item_unseen)"); + } + else { + $r1 = q("ALTER TABLE item ADD INDEX uid_item_unseen (uid, item_unseen)"); + } + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1194.php b/Zotlabs/Update/_1194.php new file mode 100644 index 000000000..916723eaa --- /dev/null +++ b/Zotlabs/Update/_1194.php @@ -0,0 +1,22 @@ +<?php + +namespace Zotlabs\Update; + +class _1194 { +function run() { + $r = q("select id, resource_id from item where resource_type = 'nwiki'"); + if($r) { + foreach($r as $rv) { + $mimetype = get_iconfig($rv['id'],'wiki','mimeType'); + q("update item set mimetype = '%s' where resource_type = 'nwikipage' and resource_id = '%s'", + dbesc($mimetype), + dbesc($rv['resource_id']) + ); + } + } + + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1195.php b/Zotlabs/Update/_1195.php new file mode 100644 index 000000000..248e9a34a --- /dev/null +++ b/Zotlabs/Update/_1195.php @@ -0,0 +1,21 @@ +<?php + +namespace Zotlabs\Update; + +class _1195 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("CREATE INDEX item_resource_id ON item (resource_id)"); + } + else { + $r1 = q("ALTER TABLE item ADD INDEX (resource_id)"); + } + + if($r1) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1196.php b/Zotlabs/Update/_1196.php new file mode 100644 index 000000000..720252bf8 --- /dev/null +++ b/Zotlabs/Update/_1196.php @@ -0,0 +1,45 @@ +<?php + +namespace Zotlabs\Update; + +class _1196 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("CREATE TABLE \"pchan\" ( + \"pchan_id\" serial NOT NULL, + \"pchan_guid\" text NOT NULL, + \"pchan_hash\" text NOT NULL, + \"pchan_pubkey\" text NOT NULL, + \"pchan_prvkey\" text NOT NULL, + PRIMARY KEY (\"pchan_id\") +)"); + + $r2 = q("create index \"pchan_guid\" on pchan (\"pchan_guid\")"); + $r3 = q("create index \"pchan_hash\" on pchan (\"pchan_hash\")"); + + if($r1 && $r2 && $r3) { + return UPDATE_SUCCESS; + } + } + else { + $r1 = q("CREATE TABLE IF NOT EXISTS pchan ( + pchan_id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + pchan_guid char(191) NOT NULL DEFAULT '', + pchan_hash char(191) NOT NULL DEFAULT '', + pchan_pubkey text NOT NULL, + pchan_prvkey text NOT NULL, + PRIMARY KEY (pchan_id), + KEY pchan_guid (pchan_guid), + KEY pchan_hash (pchan_hash) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); + if($r1) { + return UPDATE_SUCCESS; + } + } + + return UPDATE_FAILED; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1197.php b/Zotlabs/Update/_1197.php new file mode 100644 index 000000000..72e4ca59d --- /dev/null +++ b/Zotlabs/Update/_1197.php @@ -0,0 +1,17 @@ +<?php + +namespace Zotlabs\Update; + +class _1197 { +function run() { + + $r = q("select diaspora_meta from item where true limit 1"); + if($r) { + $r = q("ALTER TABLE item DROP diaspora_meta"); + } + + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1198.php b/Zotlabs/Update/_1198.php new file mode 100644 index 000000000..d188c94f6 --- /dev/null +++ b/Zotlabs/Update/_1198.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1198 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_MYSQL) { + $r = q("ALTER TABLE item + DROP INDEX item_blocked, + DROP INDEX item_unpublished, + DROP INDEX item_deleted, + DROP INDEX item_delayed, + DROP INDEX item_hidden, + DROP INDEX item_pending_remove, + DROP INDEX item_type + "); + } + + return UPDATE_SUCCESS; +} + + +} diff --git a/Zotlabs/Update/_1199.php b/Zotlabs/Update/_1199.php new file mode 100644 index 000000000..7ab03b073 --- /dev/null +++ b/Zotlabs/Update/_1199.php @@ -0,0 +1,19 @@ +<?php + +namespace Zotlabs\Update; + +class _1199 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_MYSQL) { + $r = q("ALTER TABLE item + DROP INDEX uid, + ADD INDEX (item_type) + "); + } + + return UPDATE_SUCCESS; +} + + +}
\ No newline at end of file diff --git a/Zotlabs/Update/_1200.php b/Zotlabs/Update/_1200.php new file mode 100644 index 000000000..9f7bfb152 --- /dev/null +++ b/Zotlabs/Update/_1200.php @@ -0,0 +1,24 @@ +<?php + +namespace Zotlabs\Update; + +class _1200 { +function run() { + + if(ACTIVE_DBTYPE == DBTYPE_MYSQL) { + $r = q("ALTER TABLE item + DROP INDEX item_type, + ADD INDEX uid_item_type (uid, item_type) + "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + } + else { + return UPDATE_SUCCESS; + } + +} + +} diff --git a/Zotlabs/Update/_1201.php b/Zotlabs/Update/_1201.php new file mode 100644 index 000000000..920a7401e --- /dev/null +++ b/Zotlabs/Update/_1201.php @@ -0,0 +1,27 @@ +<?php + +namespace Zotlabs\Update; + +class _1201 { + + function run() { + + if(ACTIVE_DBTYPE == DBTYPE_MYSQL) { + $r = q("ALTER TABLE item + DROP INDEX item_thread_top, + ADD INDEX uid_item_thread_top (uid, item_thread_top), + ADD INDEX uid_item_blocked (uid, item_blocked), + ADD INDEX item_deleted_pending_remove_changed (item_deleted, item_pending_remove, changed) + "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + } + else { + return UPDATE_SUCCESS; + } + + } + +} diff --git a/Zotlabs/Update/_1202.php b/Zotlabs/Update/_1202.php new file mode 100644 index 000000000..c9ccd157b --- /dev/null +++ b/Zotlabs/Update/_1202.php @@ -0,0 +1,15 @@ +<?php + +namespace Zotlabs\Update; + +class _1202 { + + function run() { + + // empty update in order to make the DB_UPDATE_VERSION equal to the current maximum update function + // rather than being one greater than the last known update + + return UPDATE_SUCCESS; + + } +} diff --git a/Zotlabs/Update/_1203.php b/Zotlabs/Update/_1203.php new file mode 100644 index 000000000..2968d209d --- /dev/null +++ b/Zotlabs/Update/_1203.php @@ -0,0 +1,29 @@ +<?php + +namespace Zotlabs\Update; + +class _1203 { + + function run() { + + if(ACTIVE_DBTYPE == DBTYPE_MYSQL) { + $r = q("ALTER TABLE item + DROP INDEX item_wall, + DROP INDEX item_starred, + DROP INDEX item_retained, + ADD INDEX uid_item_wall (uid, item_wall), + ADD INDEX uid_item_starred (uid, item_starred), + ADD INDEX uid_item_retained (uid, item_retained) + "); + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + } + else { + return UPDATE_SUCCESS; + } + + } + +} diff --git a/Zotlabs/Web/HTTPSig.php b/Zotlabs/Web/HTTPSig.php index 63033ce5e..a27edb73d 100644 --- a/Zotlabs/Web/HTTPSig.php +++ b/Zotlabs/Web/HTTPSig.php @@ -137,7 +137,22 @@ class HTTPSig { } } - logger('Content_Valid: ' . $result['content_valid']); + + if(in_array('x-zot-digest',$signed_headers)) { + $result['content_signed'] = true; + $digest = explode('=', $headers['x-zot-digest']); + if($digest[0] === 'SHA-256') + $hashalg = 'sha256'; + if($digest[0] === 'SHA-512') + $hashalg = 'sha512'; + + // The explode operation will have stripped the '=' padding, so compare against unpadded base64 + if(rtrim(base64_encode(hash($hashalg,$_POST['data'],true)),'=') === $digest[1]) { + $result['content_valid'] = true; + } + } + + logger('Content_Valid: ' . (($result['content_valid']) ? 'true' : 'false')); return $result; @@ -194,8 +209,8 @@ class HTTPSig { . '",headers="' . $x['headers'] . '",signature="' . $x['signature'] . '"'; if($crypt_key) { - $x = crypto_encapsulate($headerval,$crypt_key,$crypt_alg); - $headerval = 'iv="' . $x['iv'] . '",key="' . $x['key'] . '",alg="' . $x['alg'] . '",data="' . $x['data']; + $x = crypto_encapsulate($headerval,$crypt_key,$crypt_algo); + $headerval = 'iv="' . $x['iv'] . '",key="' . $x['key'] . '",alg="' . $x['alg'] . '",data="' . $x['data'] . '"'; } if($auth) { diff --git a/Zotlabs/Widget/Forums.php b/Zotlabs/Widget/Forums.php index 44d95012f..f65a639ff 100644 --- a/Zotlabs/Widget/Forums.php +++ b/Zotlabs/Widget/Forums.php @@ -64,7 +64,8 @@ class Forums { // There also should be a way to update this via ajax. for($x = 0; $x < count($r1); $x ++) { - $r = q("select sum(item_unseen) as unseen from item where owner_xchan = '%s' and uid = %d and item_unseen = 1 $perms_sql ", + $r = q("select sum(item_unseen) as unseen from item + where uid = %d and owner_xchan = '%s' and item_unseen = 1 $perms_sql ", dbesc($r1[$x]['xchan_hash']), intval(local_channel()) ); diff --git a/Zotlabs/Widget/Notifications.php b/Zotlabs/Widget/Notifications.php index 322a7b60a..d51cb0113 100644 --- a/Zotlabs/Widget/Notifications.php +++ b/Zotlabs/Widget/Notifications.php @@ -67,7 +67,7 @@ class Notifications { 'label' => t('New Events'), 'title' => t('New Events Notifications'), 'viewall' => [ - 'url' => 'mail/combined', + 'url' => 'events', 'label' => t('View events') ], 'markall' => [ diff --git a/app/pubstream.apd b/app/pubstream.apd index ebfcf38b0..ce9997126 100644 --- a/app/pubstream.apd +++ b/app/pubstream.apd @@ -1,6 +1,6 @@ -version: 2 +version: 2.2 url: $baseurl/pubstream -requires: config:disable_discover_tab=0 +requires: public_stream name: Public Stream photo: icon:globe -categories: Social +categories: Social, nav_featured_app @@ -38,7 +38,6 @@ require_once('include/datetime.php'); require_once('include/language.php'); require_once('include/nav.php'); require_once('include/permissions.php'); -require_once('library/Mobile_Detect/Mobile_Detect.php'); require_once('include/features.php'); require_once('include/taxonomy.php'); require_once('include/channel.php'); @@ -51,10 +50,10 @@ require_once('include/attach.php'); require_once('include/bbcode.php'); define ( 'PLATFORM_NAME', 'hubzilla' ); -define ( 'STD_VERSION', '3.1.5' ); +define ( 'STD_VERSION', '3.1.12' ); define ( 'ZOT_REVISION', '1.3' ); -define ( 'DB_UPDATE_VERSION', 1198 ); +define ( 'DB_UPDATE_VERSION', 1203 ); define ( 'PROJECT_BASE', __DIR__ ); @@ -662,13 +661,6 @@ function sys_boot() { } -/** - * @brief Reverse the effect of magic_quotes_gpc if it is enabled. - * - * Please disable magic_quotes_gpc so we don't have to do this. - * See http://php.net/manual/en/security.magicquotes.disabling.php - * - */ function startup() { error_reporting(E_ERROR | E_WARNING | E_PARSE); @@ -685,22 +677,6 @@ function startup() { // Disable transparent Session ID support @ini_set('session.use_trans_sid', 0); } - - if (get_magic_quotes_gpc()) { - $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); - while (list($key, $val) = each($process)) { - foreach ($val as $k => $v) { - unset($process[$key][$k]); - if (is_array($v)) { - $process[$key][stripslashes($k)] = $v; - $process[] = &$process[$key][stripslashes($k)]; - } else { - $process[$key][stripslashes($k)] = stripslashes($v); - } - } - } - unset($process); - } } @@ -788,9 +764,7 @@ class App { public static $theme_info = array(); public static $is_sys = false; public static $nav_sel; - public static $is_mobile = false; - public static $is_tablet = false; - public static $comanche; + public static $comanche; public static $channel_links; @@ -961,14 +935,6 @@ class App { self::$pager['total'] = 0; /* - * Detect mobile devices - */ - - $mobile_detect = new Mobile_Detect(); - self::$is_mobile = $mobile_detect->isMobile(); - self::$is_tablet = $mobile_detect->isTablet(); - - /* * register template engines */ @@ -1450,58 +1416,10 @@ function check_config() { $x = new \Zotlabs\Lib\DB_Upgrade(DB_UPDATE_VERSION); - /** - * - * Synchronise plugins: - * - * App::$config['system']['addon'] contains a comma-separated list of names - * of plugins/addons which are used on this system. - * Go through the database list of already installed addons, and if we have - * an entry, but it isn't in the config list, call the unload procedure - * and mark it uninstalled in the database (for now we'll remove it). - * Then go through the config list and if we have a plugin that isn't installed, - * call the install procedure and add it to the database. - * - */ - - $r = q("SELECT * FROM addon WHERE installed = 1"); - if($r) - $installed = $r; - else - $installed = array(); - - $plugins = get_config('system', 'addon'); - $plugins_arr = array(); - - if($plugins) - $plugins_arr = explode(',', str_replace(' ', '', $plugins)); - - App::$plugins = $plugins_arr; - - $installed_arr = array(); - - if(count($installed)) { - foreach($installed as $i) { - if(! in_array($i['aname'], $plugins_arr)) { - unload_plugin($i['aname']); - } - else { - $installed_arr[] = $i['aname']; - } - } - } - - if(count($plugins_arr)) { - foreach($plugins_arr as $p) { - if(! in_array($p, $installed_arr)) { - load_plugin($p); - } - } - } + plugins_sync(); load_hooks(); - check_for_new_perms(); check_cron_broken(); @@ -1767,6 +1685,26 @@ function remote_channel() { return false; } + +function can_view_public_stream() { + + if((observer_prohibited(true)) + || (! (intval(get_config('system','open_pubstream',1))) && get_observer_hash())) { + return false; + } + + $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false); + $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true); + + if(! ($site_firehose || $net_firehose)) { + return false; + } + + return true; + +} + + /** * @brief Show an error or alert text on next page load. * @@ -2246,22 +2184,6 @@ function construct_page() { } } - if(App::$is_mobile || App::$is_tablet) { - if(isset($_SESSION['show_mobile']) && !$_SESSION['show_mobile']) { - $link = z_root() . '/toggle_mobile?f=&address=' . curPageURL(); - } - else { - $link = z_root() . '/toggle_mobile?f=&off=1&address=' . curPageURL(); - } - if ((isset($_SESSION) && $_SESSION['mobile_theme'] !='' && $_SESSION['mobile_theme'] !='---' ) || - (isset(App::$config['system']['mobile_theme']) && !isset($_SESSION['mobile_theme']))) { - App::$page['footer'] .= replace_macros(get_markup_template("toggle_mobile_footer.tpl"), array( - '$toggle_link' => $link, - '$toggle_text' => t('toggle mobile') - )); - } - } - $page = App::$page; $profile = App::$profile; diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 4e203074b..bada3e528 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -5,104 +5,9 @@ * @package acl_selectors */ -/** - * @brief - * - * @param string $selname - * @param string $selclass - * @param mixed $preselected - * @param number $size - * @return string - */ -function group_select($selname, $selclass, $preselected = false, $size = 4) { - - $o = ''; - - $o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\">\r\n"; - - $r = q("SELECT * FROM groups WHERE deleted = 0 AND uid = %d ORDER BY gname ASC", - intval(local_channel()) - ); - - - $arr = array('group' => $r, 'entry' => $o); - - // e.g. 'network_pre_group_deny', 'profile_pre_group_allow' - - call_hooks(App::$module . '_pre_' . $selname, $arr); - - if($r) { - foreach($r as $rr) { - if((is_array($preselected)) && in_array($rr['id'], $preselected)) - $selected = " selected=\"selected\" "; - else - $selected = ''; - $trimmed = mb_substr($rr['gname'],0,12); - - $o .= "<option value=\"{$rr['id']}\" $selected title=\"{$rr['name']}\" >$trimmed</option>\r\n"; - } - - } - $o .= "</select>\r\n"; - - call_hooks(App::$module . '_post_' . $selname, $o); - - return $o; -} - -function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false, $tabindex = null) { - - $o = ''; - - // When used for private messages, we limit correspondence to mutual DFRN/Friendica friends and the selector - // to one recipient. By default our selector allows multiple selects amongst all contacts. - - $sql_extra = ''; - - $tabindex = ($tabindex > 0 ? 'tabindex="$tabindex"' : ''); - - if($privmail) - $o .= "<select name=\"$selname\" id=\"$selclass\" class=\"$selclass\" size=\"$size\" $tabindex >\r\n"; - else - $o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" $tabindex>\r\n"; - - $r = q("SELECT abook_id, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash - where abook_self = 0 and abook_channel = %d - $sql_extra - ORDER BY xchan_name ASC", - intval(local_channel()) - ); - - - $arr = array('contact' => $r, 'entry' => $o); - - // e.g. 'network_pre_contact_deny', 'profile_pre_contact_allow' - - call_hooks(App::$module . '_pre_' . $selname, $arr); - - if($r) { - foreach($r as $rr) { - if((is_array($preselected)) && in_array($rr['id'], $preselected)) - $selected = ' selected="selected" '; - else - $selected = ''; - - $trimmed = mb_substr($rr['xchan_name'], 0, 20); - - $o .= "<option value=\"{$rr['abook_id']}\" $selected title=\"{$rr['xchan_name']}|{$rr['xchan_url']}\" >$trimmed</option>\r\n"; - } - } - - $o .= "</select>\r\n"; - - call_hooks(App::$module . '_post_' . $selname, $o); - - return $o; -} - function fixacl(&$item) { - $item = str_replace(array('<', '>'), array('', ''), $item); + $item = str_replace( [ '<', '>' ], [ '', '' ], $item); } /** diff --git a/include/bbcode.php b/include/bbcode.php index 0c85a0a4e..03a46444b 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -438,7 +438,7 @@ function bb_summary($match) { $rnd3 = mt_rand(); $rnd4 = mt_rand(); - return $match[1] . '<div style="display: block;" id="opendiv-' . $rnd2 . '">' . $match[2] . '</div><div style="display: block;" id="opendiv-' . $rnd3 . '" onclick="openClose(\'opendiv-' . $rnd1 . '\'); openClose(\'opendiv-' . $rnd2 . '\'); openClose(\'opendiv-' . $rnd3 . '\'); openClose(\'opendiv-' . $rnd4 . '\'); return false;" class="fakelink">' . t('View article') . '</div><div style="display: none;" id="opendiv-' . $rnd4 . '" onclick="openClose(\'opendiv-' . $rnd1 . '\'); openClose(\'opendiv-' . $rnd2 . '\'); openClose(\'opendiv-' . $rnd3 . '\'); openClose(\'opendiv-' . $rnd4 . '\'); return false;" class="fakelink">' . t('View summary') . '</div><div id="opendiv-' . $rnd1 . '" style="display: none;">' . $match[3] . '</div>'; + return $match[1] . '<div style="display: block;" id="opendiv-' . $rnd2 . '">' . $match[2] . '</div><div style="display: block;" id="opendiv-' . $rnd3 . '" onclick="openClose(\'opendiv-' . $rnd1 . '\'); openClose(\'opendiv-' . $rnd2 . '\'); openClose(\'opendiv-' . $rnd3 . '\'); openClose(\'opendiv-' . $rnd4 . '\'); return false;" class="fakelink view-article">' . t('View article') . '</div><div style="display: none;" id="opendiv-' . $rnd4 . '" onclick="openClose(\'opendiv-' . $rnd1 . '\'); openClose(\'opendiv-' . $rnd2 . '\'); openClose(\'opendiv-' . $rnd3 . '\'); openClose(\'opendiv-' . $rnd4 . '\'); return false;" class="fakelink view-summary">' . t('View summary') . '</div><div id="opendiv-' . $rnd1 . '" style="display: none;">' . $match[3] . '</div>'; } @@ -628,7 +628,7 @@ function bb_code_unprotect_sub($match) { function bb_code($match) { if(strpos($match[0], "<br />")) - return '<code>' . bb_code_protect(trim($match[1])) . '</code>'; + return '<pre><code>' . bb_code_protect(trim($match[1])) . '</code></pre>'; else return '<code class="inline-code">' . bb_code_protect(trim($match[1])) . '</code>'; } @@ -636,15 +636,21 @@ function bb_code($match) { function bb_code_options($match) { if(strpos($match[0], "<br />")) { $class = ""; + $pre = true; } else { $class = "inline-code"; + $pre = false; } if(strpos($match[1], 'nowrap')) { $style = "overflow-x: auto; white-space: pre;"; } else { $style = ""; } - return '<code class="'. $class .'" style="'. $style .'">' . bb_code_protect(trim($match[2])) . '</code>'; + if($pre) { + return '<pre><code class="'. $class .'" style="'. $style .'">' . bb_code_protect(trim($match[2])) . '</code></pre>'; + } else { + return '<code class="'. $class .'" style="'. $style .'">' . bb_code_protect(trim($match[2])) . '</code>'; + } } function bb_highlight($match) { diff --git a/include/channel.php b/include/channel.php index b9adc588b..625ce16c8 100644 --- a/include/channel.php +++ b/include/channel.php @@ -2553,10 +2553,10 @@ function channel_remove($channel_id, $local = true, $unset_session = false) { q("DELETE FROM profile WHERE uid = %d", intval($channel_id)); q("DELETE FROM src WHERE src_channel_id = %d", intval($channel_id)); - $r = q("select resource_id FROM attach WHERE uid = %d", intval($channel_id)); + $r = q("select hash FROM attach WHERE uid = %d", intval($channel_id)); if($r) { foreach($r as $rv) { - attach_delete($channel_id,$rv['resource_id']); + attach_delete($channel_id,$rv['hash']); } } diff --git a/include/conversation.php b/include/conversation.php index 77694deb3..0bb9c769a 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -974,7 +974,7 @@ function author_is_pmable($xchan, $abook) { if($x['result'] !== 'unset') return $x['result']; - if($xchan['xchan_network'] === 'zot') + if($xchan['xchan_network'] === 'zot' && get_observer_hash()) return true; return false; diff --git a/include/crypto.php b/include/crypto.php index b990b18d9..ab33ba096 100644 --- a/include/crypto.php +++ b/include/crypto.php @@ -31,19 +31,6 @@ function rsa_verify($data,$sig,$key,$alg = 'sha256') { return (($verify > 0) ? true : false); } -function pkcs5_pad ($text, $blocksize) -{ - $pad = $blocksize - (strlen($text) % $blocksize); - return $text . str_repeat(chr($pad), $pad); -} - -function pkcs5_unpad($text) -{ - $pad = ord($text{strlen($text)-1}); - if ($pad > strlen($text)) return false; - if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false; - return substr($text, 0, -1 * $pad); -} function AES256CBC_encrypt($data,$key,$iv) { @@ -135,7 +122,18 @@ function other_encapsulate($data,$pubkey,$alg) { if(! $pubkey) logger('no key. data: ' . $data); - $fn = strtoupper($alg) . '_encrypt'; + $oaep = false; + + if(strpos($alg,'.oaep')) { + $oaep = true; + $subalg = substr($alg,0,-5); + } + else { + $subalg = $alg; + } + + + $fn = strtoupper($subalg) . '_encrypt'; if(function_exists($fn)) { // A bit hesitant to use openssl_random_pseudo_bytes() as we know @@ -153,14 +151,14 @@ function other_encapsulate($data,$pubkey,$alg) { $iv = openssl_random_pseudo_bytes(256); $result['data'] = base64url_encode($fn($data,$key,$iv),true); // log the offending call so we can track it down - if(! openssl_public_encrypt($key,$k,$pubkey)) { + if(! openssl_public_encrypt($key,$k,$pubkey,(($oaep) ? OPENSSL_PKCS1_OAEP_PADDING : OPENSSL_PKCS1_PADDING))) { $x = debug_backtrace(); logger('RSA failed. ' . print_r($x[0],true)); } $result['alg'] = $alg; $result['key'] = base64url_encode($k,true); - openssl_public_encrypt($iv,$i,$pubkey); + openssl_public_encrypt($iv,$i,$pubkey,(($oaep) ? OPENSSL_PKCS1_OAEP_PADDING : OPENSSL_PKCS1_PADDING)); $result['iv'] = base64url_encode($i,true); return $result; } @@ -179,7 +177,7 @@ function crypto_methods() { // The actual methods are responsible for deriving the actual key/iv from the provided parameters; // possibly by truncation or segmentation - though many other methods could be used. - $r = [ 'aes256ctr', 'camellia256cfb', 'cast5cfb', 'aes256cbc', 'aes128cbc', 'cast5cbc' ]; + $r = [ 'aes256ctr.oaep', 'camellia256cfb.oaep', 'cast5cfb.oaep', 'aes256ctr', 'camellia256cfb', 'cast5cfb', 'aes256cbc', 'aes128cbc', 'cast5cbc' ]; call_hooks('crypto_methods',$r); return $r; @@ -220,6 +218,7 @@ function aes_encapsulate($data,$pubkey) { function crypto_unencapsulate($data,$prvkey) { if(! $data) return; + $alg = ((array_key_exists('alg',$data)) ? $data['alg'] : 'aes256cbc'); if($alg === 'aes256cbc') return aes_unencapsulate($data,$prvkey); @@ -229,10 +228,21 @@ function crypto_unencapsulate($data,$prvkey) { } function other_unencapsulate($data,$prvkey,$alg) { - $fn = strtoupper($alg) . '_decrypt'; + + $oaep = false; + + if(strpos($alg,'.oaep')) { + $oaep = true; + $subalg = substr($alg,0,-5); + } + else { + $subalg = $alg; + } + + $fn = strtoupper($subalg) . '_decrypt'; if(function_exists($fn)) { - openssl_private_decrypt(base64url_decode($data['key']),$k,$prvkey); - openssl_private_decrypt(base64url_decode($data['iv']),$i,$prvkey); + openssl_private_decrypt(base64url_decode($data['key']),$k,$prvkey,(($oaep) ? OPENSSL_PKCS1_OAEP_PADDING : OPENSSL_PKCS1_PADDING)); + openssl_private_decrypt(base64url_decode($data['iv']),$i,$prvkey,(($oaep) ? OPENSSL_PKCS1_OAEP_PADDING : OPENSSL_PKCS1_PADDING)); return $fn(base64url_decode($data['data']),$k,$i); } else { @@ -282,37 +292,6 @@ function new_keypair($bits) { } -function pkcs1to8($oldkey,$len) { - - if($len == 4096) - $c = 'g'; - if($len == 2048) - $c = 'Q'; - - if(strstr($oldkey,'BEGIN PUBLIC')) - return $oldkey; - - $oldkey = str_replace('-----BEGIN RSA PUBLIC KEY-----', '', $oldkey); - $oldkey = trim(str_replace('-----END RSA PUBLIC KEY-----', '', $oldkey)); - $key = 'MIICIjANBgkqhkiG9w0BAQEFAAOCA' . $c . '8A' . str_replace("\n", '', $oldkey); - $key = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($key, 64, "\n", true) . "\n-----END PUBLIC KEY-----"; - return $key; -} - -function pkcs8to1($oldkey,$len) { - - if(strstr($oldkey,'BEGIN RSA')) - return $oldkey; - - $oldkey = str_replace('-----BEGIN PUBLIC KEY-----', '', $oldkey); - $oldkey = trim(str_replace('-----END PUBLIC KEY-----', '', $oldkey)); - $key = str_replace("\n",'',$oldkey); - $key = substr($key,32); - $key = "-----BEGIN RSA PUBLIC KEY-----\n" . wordwrap($key, 64, "\n", true) . "\n-----END RSA PUBLIC KEY-----"; - return $key; -} - - function DerToPem($Der, $Private=false) { //Encode: diff --git a/include/datetime.php b/include/datetime.php index 0fcd957be..1e9a1fa51 100644 --- a/include/datetime.php +++ b/include/datetime.php @@ -93,16 +93,6 @@ function datetime_convert($from = 'UTC', $to = 'UTC', $s = 'now', $fmt = "Y-m-d return $d->format($fmt); } - // Slight hackish adjustment so that 'zero' datetime actually returns what is intended - // otherwise we end up with -0001-11-30 ... - // add 32 days so that we at least get year 00, and then hack around the fact that - // months and days always start with 1. - -// if(substr($s,0,10) == '0000-00-00') { -// $d = new DateTime($s . ' + 32 days', new DateTimeZone('UTC')); -// return str_replace('1', '0', $d->format($fmt)); -// } - try { $from_obj = new DateTimeZone($from); } catch(Exception $e) { @@ -135,70 +125,20 @@ function datetime_convert($from = 'UTC', $to = 'UTC', $s = 'now', $fmt = "Y-m-d */ function dob($dob) { - list($year, $month, $day) = sscanf($dob, '%4d-%2d-%2d'); - $f = get_config('system', 'birthday_input_format'); - if (! $f) - $f = 'ymd'; - if ($dob === '0000-00-00') $value = ''; else $value = (($year) ? datetime_convert('UTC','UTC',$dob,'Y-m-d') : datetime_convert('UTC','UTC',$dob,'m-d')); - $o = replace_macros(get_markup_template("field_input.tpl"), array('$field' => array( - 'dob', - t('Birthday'), - $value, - ((intval($value)) ? t('Age: ') . age($value,App::$user['timezone'],App::$user['timezone']) : ''), - '', - 'placeholder="' . t('YYYY-MM-DD or MM-DD') .'"' - ))); - + $o = replace_macros(get_markup_template("field_input.tpl"), [ + '$field' => [ 'dob', t('Birthday'), $value, ((intval($value)) ? t('Age: ') . age($value,App::$user['timezone'],App::$user['timezone']) : ''), '', 'placeholder="' . t('YYYY-MM-DD or MM-DD') .'"' ] + ]); -// if ($dob && $dob != '0000-00-00') -// $o = datesel($f,mktime(0,0,0,0,0,1900),mktime(),mktime(0,0,0,$month,$day,$year),'dob'); -// else -// $o = datesel($f,mktime(0,0,0,0,0,1900),mktime(),false,'dob'); return $o; } /** - * @brief Returns a date selector. - * - * @see datetimesel() - * @param string $format - * format string, e.g. 'ymd' or 'mdy'. Not currently supported - * @param DateTime $min - * unix timestamp of minimum date - * @param DateTime $max - * unix timestap of maximum date - * @param DateTime $default - * unix timestamp of default date - * @param string $id - * id and name of datetimepicker (defaults to "datetimepicker") - */ -function datesel($format, $min, $max, $default, $id = 'datepicker') { - return datetimesel($format, $min, $max, $default, '', $id, true, false, '', ''); -} - -/** - * @brief Returns a time selector. - * - * @param string $format - * format string, e.g. 'ymd' or 'mdy'. Not currently supported - * @param string $h - * already selected hour - * @param string $m - * already selected minute - * @param string $id - * id and name of datetimepicker (defaults to "timepicker") - */ -function timesel($format, $h, $m, $id='timepicker') { - return datetimesel($format, new DateTime(), new DateTime(), new DateTime("$h:$m"), '', $id, false, true); -} - -/** * @brief Returns a datetime selector. * * @param string $format @@ -449,12 +389,7 @@ function cal($y = 0, $m = 0, $links = false, $class='') { // month table - start at 1 to match human usage. - $mtab = array(' ', - 'January','February','March', - 'April','May','June', - 'July','August','September', - 'October','November','December' - ); + $mtab = [ ' ', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ]; $thisyear = datetime_convert('UTC',date_default_timezone_get(),'now','Y'); $thismonth = datetime_convert('UTC',date_default_timezone_get(),'now','m'); @@ -463,7 +398,7 @@ function cal($y = 0, $m = 0, $links = false, $class='') { if (! $m) $m = intval($thismonth); - $dn = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); + $dn = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ]; $f = get_first_dim($y, $m); $l = get_dim($y, $m); $d = 1; @@ -569,17 +504,17 @@ function update_birthdays() { if (! perm_is_allowed($rr['abook_channel'], $rr['xchan_hash'], 'send_stream')) continue; - $ev = array(); - $ev['uid'] = $rr['abook_channel']; - $ev['account'] = $rr['abook_account']; - $ev['event_xchan'] = $rr['xchan_hash']; - $ev['dtstart'] = datetime_convert('UTC', 'UTC', $rr['abook_dob']); - $ev['dtend'] = datetime_convert('UTC', 'UTC', $rr['abook_dob'] . ' + 1 day '); - $ev['adjust'] = intval(feature_enabled($rr['abook_channel'],'smart_birthdays')); - $ev['summary'] = sprintf( t('%1$s\'s birthday'), $rr['xchan_name']); - $ev['description'] = sprintf( t('Happy Birthday %1$s'), - '[zrl=' . $rr['xchan_url'] . ']' . $rr['xchan_name'] . '[/zrl]') ; - $ev['etype'] = 'birthday'; + $ev = [ + 'uid' => $rr['abook_channel'], + 'account' => $rr['abook_account'], + 'event_xchan' => $rr['xchan_hash'], + 'dtstart' => datetime_convert('UTC', 'UTC', $rr['abook_dob']), + 'dtend' => datetime_convert('UTC', 'UTC', $rr['abook_dob'] . ' + 1 day '), + 'adjust' => intval(feature_enabled($rr['abook_channel'],'smart_birthdays')), + 'summary' => sprintf( t('%1$s\'s birthday'), $rr['xchan_name']), + 'description' => sprintf( t('Happy Birthday %1$s'), '[zrl=' . $rr['xchan_url'] . ']' . $rr['xchan_name'] . '[/zrl]'), + 'etype' => 'birthday', + ]; $z = event_store_event($ev); if ($z) { diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php index deec9adfd..b3298b673 100755 --- a/include/dba/dba_driver.php +++ b/include/dba/dba_driver.php @@ -1,15 +1,20 @@ <?php +/** + * @file dba_driver.php + * @brief Some database related functions and database classes. + * + * This file contains the abstract database driver class dba_driver, the + * database class DBA and some functions for working with databases. + */ +/** + * @brief Database classs with database factory method. + * + * The factory will return a database driver which is an implementation of the + * abstract dba_driver class. + */ class DBA { - /** - * @file dba_driver.php - * @brief some database related functions and abstract driver class. - * - * This file contains the abstract database driver class dba_driver and some - * functions for working with databases. - */ - static public $dba = null; static public $dbtype = null; static public $scheme = 'mysql'; @@ -21,7 +26,6 @@ class DBA { static public $tquot = "`"; - /** * @brief Returns the database driver object. * @@ -34,14 +38,11 @@ class DBA { * @param bool $install Defaults to false * @return null|dba_driver A database driver object (dba_pdo) or null if no driver found. */ - static public function dba_factory($server,$port,$user,$pass,$db,$dbtype,$install = false) { self::$dba = null; - self::$dbtype = intval($dbtype); - if(self::$dbtype == DBTYPE_POSTGRES) { if(!($port)) $port = 5432; @@ -50,7 +51,6 @@ class DBA { self::$utc_now = "now() at time zone 'UTC'"; self::$tquot = '"'; self::$scheme = 'pgsql'; - } else { @@ -66,40 +66,27 @@ class DBA { require_once('include/dba/dba_pdo.php'); self::$dba = new dba_pdo($server,self::$scheme,$port,$user,$pass,$db,$install); - - if(is_object(self::$dba) && self::$dba->connected) { - - if(strpbrk($server,':;')) { - $dsn = $server; - } - else { - $dsn = self::$scheme . ':host=' . $server . (intval($port) ? '' : ';port=' . $port); - } - $dsn .= ';dbname=' . $db; - - - self::$dba->pdo_set(array($dsn,$user,$pass)); - } define('NULL_DATE', self::$null_date); define('ACTIVE_DBTYPE', self::$dbtype); define('TQUOT', self::$tquot); + return self::$dba; } } /** - * @brief abstract database driver class. + * @brief Abstract database driver class. * - * This class gets extended by the real database driver classes, e.g. dba_mysql, - * dba_mysqli. + * This class gets extended by the real database driver class. We used to have + * dba_mysql, dba_mysqli or dba_postgres, but we moved to PDO and the only + * implemented driver is dba_pdo. */ abstract class dba_driver { // legacy behavior public $db; - protected $pdo = array(); public $debug = 0; public $connected = false; @@ -111,6 +98,7 @@ abstract class dba_driver { * This abstract function needs to be implemented in the real driver. * * @param string $server DB server name + * @param string $scheme DB scheme * @param string $port DB port * @param string $user DB username * @param string $pass DB password @@ -166,6 +154,7 @@ abstract class dba_driver { $platform_name = \Zotlabs\Lib\System::get_platform_name(); if(file_exists('install/' . $platform_name . '/' . \DBA::$install_script)) return 'install/' . $platform_name . '/' . \DBA::$install_script; + return 'install/' . \DBA::$install_script; } @@ -173,7 +162,6 @@ abstract class dba_driver { return \DBA::$tquot; } - function utcnow() { return \DBA::$utc_now; } @@ -232,19 +220,12 @@ abstract class dba_driver { return $str; } - function pdo_set($x) { - $this->pdo = $x; - } - - function pdo_get() { - return $this->pdo; - } - } // end abstract dba_driver class - +// // Procedural functions +// function printable($s) { $s = preg_replace("~([\x01-\x08\x0E-\x0F\x10-\x1F\x7F-\xFF])~",".", $s); @@ -275,7 +256,7 @@ function dbg($state) { * wrapping with intval(). * * @param string $str A string to pass to a DB query - * @return Return an escaped string of the value to pass to a DB query. + * @return string Return an escaped string of the value to pass to a DB query. */ function dbesc($str) { @@ -298,6 +279,7 @@ function dbunescbin($str) { function dbescdate($date) { if(is_null_date($date)) return \DBA::$dba->escape(NULL_DATE); + return \DBA::$dba->escape($date); } @@ -330,17 +312,17 @@ function db_use_index($str) { * * printf style arguments %s and %d are replaced with variable arguments, which * should each be appropriately dbesc() or intval(). + * * SELECT queries return an array of results or false if SQL or DB error. Other * queries return true if the command was successful or false if it wasn't. * * Example: - * $r = q("SELECT * FROM %s WHERE `uid` = %d", - * 'user', 1); + * @code{.php}$r = q("SELECT * FROM %s WHERE `uid` = %d", + * 'user', 1);@endcode * * @param string $sql The SQL query to execute * @return bool|array */ - function q($sql) { $args = func_get_args(); @@ -359,8 +341,8 @@ function q($sql) { } /* - * This will happen occasionally trying to store the - * session data after abnormal program termination + * This will happen occasionally trying to store the + * session data after abnormal program termination */ db_logger('dba: no database: ' . print_r($args,true),LOGGER_NORMAL,LOG_CRIT); @@ -389,8 +371,8 @@ function dbq($sql) { // Caller is responsible for ensuring that any integer arguments to // dbesc_array are actually integers and not malformed strings containing -// SQL injection vectors. All integer array elements should be specifically -// cast to int to avoid trouble. +// SQL injection vectors. All integer array elements should be specifically +// cast to int to avoid trouble. function dbesc_array_cb(&$item, $key) { if(is_string($item)) { @@ -423,7 +405,7 @@ function dbesc_array(&$arr) { function db_getfunc($f) { $lookup = array( 'rand'=>array( - DBTYPE_MYSQL=>'RAND()', + DBTYPE_MYSQL=>'RAND()', DBTYPE_POSTGRES=>'RANDOM()' ), 'utc_timestamp'=>array( diff --git a/include/dba/dba_mysql.php b/include/dba/dba_mysql.php deleted file mode 100755 index 8b51cf578..000000000 --- a/include/dba/dba_mysql.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -require_once('include/dba/dba_driver.php'); - - -class dba_mysql extends dba_driver { - - function connect($server, $scheme, $port, $user,$pass,$db) { - $this->db = mysql_connect($server.":".$port,$user,$pass); - if($this->db && mysql_select_db($db,$this->db)) { - $this->connected = true; - } - if($this->connected) { - return true; - } - return false; - } - - - function q($sql) { - if((! $this->db) || (! $this->connected)) - return false; - - $this->error = ''; - $result = @mysql_query($sql,$this->db); - - - if(mysql_errno($this->db)) - $this->error = mysql_error($this->db); - - if($result === false || $this->error) { - logger('dba_mysql: ' . printable($sql) . ' returned false.' . "\n" . $this->error); - if(file_exists('dbfail.out')) - file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n" . $this->error . "\n", FILE_APPEND); - } - - if(($result === true) || ($result === false)) - return $result; - - $r = array(); - if(mysql_num_rows($result)) { - while($x = mysql_fetch_array($result,MYSQL_ASSOC)) - $r[] = $x; - mysql_free_result($result); - if($this->debug) - logger('dba_mysql: ' . printable(print_r($r,true))); - } - return $r; - } - - function escape($str) { - if($this->db && $this->connected) { - return @mysql_real_escape_string($str,$this->db); - } - } - - function close() { - if($this->db) - mysql_close($this->db); - $this->connected = false; - } - - function getdriver() { - return 'mysql'; - } - -} diff --git a/include/dba/dba_mysqli.php b/include/dba/dba_mysqli.php deleted file mode 100755 index 165c8e969..000000000 --- a/include/dba/dba_mysqli.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php /** @file */ - -require_once('include/dba/dba_driver.php'); - -class dba_mysqli extends dba_driver { - - function connect($server,$scheme,$port,$user,$pass,$db) { - if($port) - $this->db = new mysqli($server,$user,$pass,$db, $port); - else - $this->db = new mysqli($server,$user,$pass,$db); - - if($this->db->connect_error) { - $this->connected = false; - $this->error = $this->db->connect_error; - - if(file_exists('dbfail.out')) { - file_put_contents('dbfail.out', datetime_convert() . "\nConnect: " . $this->error . "\n", FILE_APPEND); - } - - return false; - } - else { - $this->connected = true; - return true; - } - } - - function q($sql) { - if((! $this->db) || (! $this->connected)) - return false; - - $this->error = ''; - $result = $this->db->query($sql); - - if($this->db->errno) - $this->error = $this->db->error; - - - if($this->error) { - db_logger('dba_mysqli: ERROR: ' . printable($sql) . "\n" . $this->error, LOGGER_NORMAL, LOG_ERR); - if(file_exists('dbfail.out')) { - file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . "\n" . $this->error . "\n", FILE_APPEND); - } - } - - if(($result === true) || ($result === false)) { - if($this->debug) { - db_logger('dba_mysqli: DEBUG: ' . printable($sql) . ' returns ' . (($result) ? 'true' : 'false'), LOGGER_NORMAL,(($result) ? LOG_INFO : LOG_ERR)); - } - return $result; - } - - if($this->debug) { - db_logger('dba_mysqli: DEBUG: ' . printable($sql) . ' returned ' . $result->num_rows . ' results.', LOGGER_NORMAL, LOG_INFO); - } - - $r = array(); - if($result->num_rows) { - while($x = $result->fetch_array(MYSQLI_ASSOC)) - $r[] = $x; - $result->free_result(); - if($this->debug) { - db_logger('dba_mysqli: ' . printable(print_r($r,true)), LOGGER_NORMAL, LOG_INFO); - } - } - return $r; - } - - function escape($str) { - if($this->db && $this->connected) { - return @$this->db->real_escape_string($str); - } - } - - function close() { - if($this->db) - $this->db->close(); - $this->connected = false; - } - - function getdriver() { - return 'mysqli'; - } - -}
\ No newline at end of file diff --git a/include/dba/dba_pdo.php b/include/dba/dba_pdo.php index a9d824a50..f24c5381a 100755 --- a/include/dba/dba_pdo.php +++ b/include/dba/dba_pdo.php @@ -1,14 +1,21 @@ -<?php /** @file */ +<?php -require_once('include/dba/dba_driver.php'); +require_once 'include/dba/dba_driver.php'; +/** + * @brief PDO based database driver. + * + */ class dba_pdo extends dba_driver { - public $driver_dbtype = null; - function connect($server,$scheme,$port,$user,$pass,$db) { - + /** + * {@inheritDoc} + * @see dba_driver::connect() + */ + function connect($server, $scheme, $port, $user, $pass, $db) { + $this->driver_dbtype = $scheme; if(strpbrk($server,':;')) { @@ -17,7 +24,7 @@ class dba_pdo extends dba_driver { else { $dsn = $this->driver_dbtype . ':host=' . $server . (intval($port) ? ';port=' . $port : ''); } - + $dsn .= ';dbname=' . $db; try { @@ -36,10 +43,19 @@ class dba_pdo extends dba_driver { $this->q("SET standard_conforming_strings = 'off'; SET backslash_quote = 'on';"); $this->connected = true; - return true; + return true; } + /** + * {@inheritDoc} + * @see dba_driver::q() + * + * @return bool|array|PDOStatement + * - \b false if not connected or PDOException occured on query + * - \b array with results on a SELECT query + * - \b PDOStatement on a non SELECT SQL query + */ function q($sql) { if((! $this->db) || (! $this->connected)) return false; @@ -50,14 +66,15 @@ class dba_pdo extends dba_driver { } } + $result = null; $this->error = ''; - $select = ((stripos($sql,'select') === 0) ? true : false); + $select = ((stripos($sql, 'select') === 0) ? true : false); try { $result = $this->db->query($sql, PDO::FETCH_ASSOC); } catch(PDOException $e) { - + $this->error = $e->getMessage(); if($this->error) { db_logger('dba_pdo: ERROR: ' . printable($sql) . "\n" . $this->error, LOGGER_NORMAL, LOG_ERR); @@ -82,11 +99,10 @@ class dba_pdo extends dba_driver { } if($this->debug) { - db_logger('dba_pdo: DEBUG: ' . printable($sql) . ' returned ' . count($r) . ' results.', LOGGER_NORMAL, LOG_INFO); + db_logger('dba_pdo: DEBUG: ' . printable($sql) . ' returned ' . count($r) . ' results.', LOGGER_NORMAL, LOG_INFO); db_logger('dba_pdo: ' . printable(print_r($r,true)), LOGGER_NORMAL, LOG_INFO); } - return (($this->error) ? false : $r); } @@ -99,9 +115,10 @@ class dba_pdo extends dba_driver { function close() { if($this->db) $this->db = null; + $this->connected = false; } - + function concat($fld,$sep) { if($this->driver_dbtype === 'pgsql') { return 'string_agg(' . $fld . ',\'' . $sep . '\')'; @@ -140,7 +157,7 @@ class dba_pdo extends dba_driver { return $this->escape($str); } } - + function unescapebin($str) { if($this->driver_dbtype === 'pgsql' && (! is_null($str))) { $x = ''; diff --git a/include/dba/dba_postgres.php b/include/dba/dba_postgres.php deleted file mode 100644 index 560d8da60..000000000 --- a/include/dba/dba_postgres.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php - -require_once('include/dba/dba_driver.php'); - - -class dba_postgres extends dba_driver { - const INSTALL_SCRIPT='install/schema_postgres.sql'; - const NULL_DATE = '0001-01-01 00:00:00'; - const UTC_NOW = "now() at time zone 'UTC'"; - const TQUOT = '"'; - - function connect($server,$scheme,$port,$user,$pass,$db) { - if(!$port) $port = 5432; - $connstr = 'host=' . $server . ' port='.$port . ' user=' . $user . ' password=' . $pass . ' dbname='. $db; - $this->db = pg_connect($connstr); - if($this->db !== false) { - $this->connected = true; - } else { - $this->connected = false; - } - $this->q("SET standard_conforming_strings = 'off'; SET backslash_quote = 'on';"); // emulate mysql string escaping to prevent massive code-clobber - return $this->connected; - } - - function q($sql) { - if((! $this->db) || (! $this->connected)) - return false; - - if(!strpos($sql, ';')) - $sql .= ';'; - - if(strpos($sql, '`')) // this is a hack. quoted identifiers should be replaced everywhere in the code with dbesc_identifier(), remove this once it is - $sql = str_replace('`', '"', $sql); - - $this->error = ''; - $result = @pg_query($this->db, $sql); - if(file_exists('db-allqueries.out')) { - $bt = debug_backtrace(); - $trace = array(); - foreach($bt as $frame) { - if(!empty($frame['file']) && @strstr($frame['file'], $_SERVER['DOCUMENT_ROOT'])) - $frame['file'] = substr($frame['file'], strlen($_SERVER['DOCUMENT_ROOT'])+1); - - $trace[] = $frame['file'] . ':' . $frame['function'] . '():' . $frame['line'] ; - } - $compact = join(', ', $trace); - file_put_contents('db-allqueries.out', datetime_convert() . ": " . $sql . ' is_resource: '.var_export(is_resource($result), true).', backtrace: '.$compact."\n\n", FILE_APPEND); - } - - if($result === false) - $this->error = pg_last_error($this->db); - - if($result === false || $this->error) { - //db_logger('dba_postgres: ' . printable($sql) . ' returned false.' . "\n" . $this->error); - if(file_exists('dbfail.out')) - file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n" . $this->error . "\n", FILE_APPEND); - } - - if(($result === true) || ($result === false)) - return $result; - - if(pg_result_status($result) == PGSQL_COMMAND_OK) - return true; - - $r = array(); - if(pg_num_rows($result)) { - while($x = pg_fetch_array($result, null, PGSQL_ASSOC)) - $r[] = $x; - pg_free_result($result); - if($this->debug) - db_logger('dba_postgres: ' . printable(print_r($r,true))); - } - return $r; - } - - function escape($str) { - if($this->db && $this->connected) { - $x = @pg_escape_string($this->db, $str); - return $x; - } - } - - function escapebin($str) { - return pg_escape_bytea($str); - } - - function unescapebin($str) { - return pg_unescape_bytea($str); - } - - function close() { - if($this->db) - pg_close($this->db); - $this->connected = false; - } - - function quote_interval($txt) { - return "'$txt'"; - } - - function escape_identifier($str) { - return pg_escape_identifier($this->db, $str); - } - - function optimize_table($table) { - // perhaps do some equivalent thing here, vacuum, etc? I think this is the DBA's domain anyway. Applications should not need to muss with this. - // for now do nothing without a compelling reason. function overrides default legacy mysql. - } - - function concat($fld, $sep) { - return 'string_agg(' . $fld . ',\'' . $sep . '\')'; - } - - function getdriver() { - return 'pgsql'; - } -}
\ No newline at end of file diff --git a/include/feedutils.php b/include/feedutils.php index 5ef45a6cd..369193fce 100644 --- a/include/feedutils.php +++ b/include/feedutils.php @@ -253,19 +253,18 @@ function construct_activity_target($item) { return ''; } + /** - * @brief Return an array with a parsed atom item. + * @brief Return an array with a parsed atom author. * * @param SimplePie $feed - * @param array $item - * @param[out] array $author - * @return array Associative array with the parsed item data + * @param SimplePie $item + * @return array $author */ -function get_atom_elements($feed, $item, &$author) { - require_once('include/html2bbcode.php'); +function get_atom_author($feed, $item) { - $res = array(); + $author = []; $found_author = $item->get_author(); if($found_author) { @@ -290,52 +289,6 @@ function get_atom_elements($feed, $item, &$author) { if(substr($author['author_link'],-1,1) == '/') $author['author_link'] = substr($author['author_link'],0,-1); - $res['mid'] = normalise_id(unxmlify($item->get_id())); - $res['title'] = unxmlify($item->get_title()); - $res['body'] = unxmlify($item->get_content()); - $res['plink'] = unxmlify($item->get_link(0)); - $res['item_rss'] = 1; - - - $summary = unxmlify($item->get_description(true)); - - // removing the content of the title if its identically to the body - // This helps with auto generated titles e.g. from tumblr - - if (title_is_body($res['title'], $res['body'])) - $res['title'] = ""; - - if($res['plink']) - $base_url = implode('/', array_slice(explode('/',$res['plink']),0,3)); - else - $base_url = ''; - - - $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'); - if($rawcreated) - $res['created'] = unxmlify($rawcreated[0]['data']); - - $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'); - if($rawedited) - $res['edited'] = unxmlify($rawedited[0]['data']); - - if((x($res,'edited')) && (! (x($res,'created')))) - $res['created'] = $res['edited']; - - if(! $res['created']) - $res['created'] = $item->get_date('c'); - - if(! $res['edited']) - $res['edited'] = $item->get_date('c'); - - $rawverb = $item->get_item_tags(NAMESPACE_ACTIVITY, 'verb'); - - // select between supported verbs - - if($rawverb) { - $res['verb'] = unxmlify($rawverb[0]['data']); - } - // look for a photo. We should check media size and find the best one, // but for now let's just find any author photo @@ -414,6 +367,122 @@ function get_atom_elements($feed, $item, &$author) { } } + $rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner'); + if(! $rawowner) + $rawowner = $item->get_item_tags(NAMESPACE_ZOT, 'owner'); + + if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']) + $author['owner_name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']); + elseif($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data']) + $author['owner_name'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data']); + if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']) + $author['owner_link'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']); + elseif($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data']) + $author['owner_link'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data']); + + if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) { + $base = $rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']; + + foreach($base as $link) { + if(!x($author, 'owner_photo') || ! $author['owner_photo']) { + if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar') + $author['owner_photo'] = unxmlify($link['attribs']['']['href']); + } + } + } + + // build array to pass to hook + $arr = [ + 'feed' => $feed, + 'item' => $item, + 'author' => $author + ]; + /** + * @hooks parse_atom + * * \e SimplePie \b feed - The original SimplePie feed + * * \e SimplePie \b item + * * \e array \b result - the result array that will also get returned + */ + call_hooks('parse_atom_author', $arr); + + logger('author: ' . print_r($arr['author'], true), LOGGER_DATA); + + return $arr['author']; +} + + +/** + * @brief Return an array with a parsed atom item. + * + * @param SimplePie $feed + * @param SimplePie $item + * @param[out] array $author + * @return array Associative array with the parsed item data + */ + +function get_atom_elements($feed, $item) { + + require_once('include/html2bbcode.php'); + + $res = array(); + + + $res['mid'] = normalise_id(unxmlify($item->get_id())); + $res['title'] = unxmlify($item->get_title()); + $res['body'] = unxmlify($item->get_content()); + $res['plink'] = unxmlify($item->get_link(0)); + $res['item_rss'] = 1; + + + $summary = unxmlify($item->get_description(true)); + + if($summary === $res['body']) + $summary = ''; + + if(($summary) && ((strpos($summary,'<') !== false) || (strpos($summary,'>') !== false))) { + $summary = purify_html($summary); + $summary = html2bbcode($summary); + } + + + + // removing the content of the title if its identically to the body + // This helps with auto generated titles e.g. from tumblr + + if (title_is_body($res['title'], $res['body'])) + $res['title'] = ""; + + if($res['plink']) + $base_url = implode('/', array_slice(explode('/',$res['plink']),0,3)); + else + $base_url = ''; + + + $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'); + if($rawcreated) + $res['created'] = unxmlify($rawcreated[0]['data']); + + $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'); + if($rawedited) + $res['edited'] = unxmlify($rawedited[0]['data']); + + if((x($res,'edited')) && (! (x($res,'created')))) + $res['created'] = $res['edited']; + + if(! $res['created']) + $res['created'] = $item->get_date('c'); + + if(! $res['edited']) + $res['edited'] = $item->get_date('c'); + + $rawverb = $item->get_item_tags(NAMESPACE_ACTIVITY, 'verb'); + + // select between supported verbs + + if($rawverb) { + $res['verb'] = unxmlify($rawverb[0]['data']); + } + $rawcnv = $item->get_item_tags(NAMESPACE_OSTATUS, 'conversation'); if($rawcnv) { // new style @@ -428,7 +497,7 @@ function get_atom_elements($feed, $item, &$author) { } } - $ostatus_protocol = (($ostatus_conversation) ? true : false); + $ostatus_protocol = (($ostatus_conversation || $res['verb']) ? true : false); $mastodon = (($item->get_item_tags('http://mastodon.social/schema/1.0','scope')) ? true : false); if($mastodon) { @@ -437,6 +506,8 @@ function get_atom_elements($feed, $item, &$author) { $res['item_private'] = 1; } + logger('ostatus_protocol: ' . intval($ostatus_protocol), LOGGER_DEBUG); + $apps = $item->get_item_tags(NAMESPACE_STATUSNET, 'notice_info'); if($apps && $apps[0]['attribs']['']['source']) { $res['app'] = strip_tags(unxmlify($apps[0]['attribs']['']['source'])); @@ -540,9 +611,8 @@ function get_atom_elements($feed, $item, &$author) { ); } - // turn Mastodon content warning into a #nsfw hashtag - if($mastodon && $summary) { - $res['body'] = $summary . "\n\n" . $res['body'] . "\n\n#ContentWarning\n"; + if($summary && $res['body']) { + $res['body'] = '[summary]' . $summary . '[/summary]' . $res['body']; } @@ -571,29 +641,6 @@ function get_atom_elements($feed, $item, &$author) { $res['created'] = datetime_convert('UTC','UTC',$res['created']); $res['edited'] = datetime_convert('UTC','UTC',$res['edited']); - $rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner'); - if(! $rawowner) - $rawowner = $item->get_item_tags(NAMESPACE_ZOT, 'owner'); - - if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']) - $author['owner_name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']); - elseif($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data']) - $author['owner_name'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data']); - if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']) - $author['owner_link'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']); - elseif($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data']) - $author['owner_link'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data']); - - if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) { - $base = $rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']; - - foreach($base as $link) { - if(!x($author, 'owner_photo') || ! $author['owner_photo']) { - if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar') - $author['owner_photo'] = unxmlify($link['attribs']['']['href']); - } - } - } $rawgeo = $item->get_item_tags(NAMESPACE_GEORSS, 'point'); if($rawgeo) @@ -756,20 +803,17 @@ function get_atom_elements($feed, $item, &$author) { $arr = [ 'feed' => $feed, 'item' => $item, - 'author' => $author, 'result' => $res ]; /** * @hooks parse_atom * * \e SimplePie \b feed - The original SimplePie feed - * * \e array \b item - * * \e array \b author + * * \e SimplePie \b item * * \e array \b result - the result array that will also get returned */ call_hooks('parse_atom', $arr); - logger('author: ' .print_r($arr['author'], true), LOGGER_DATA); - logger('result: ' .print_r($arr['result'], true), LOGGER_DATA); + logger('result: ' . print_r($arr['result'], true), LOGGER_DATA); return $arr['result']; } @@ -968,9 +1012,9 @@ function process_feed_tombstones($feed,$importer,$contact,$pass) { * @param string $xml * The (atom) feed to consume - RSS isn't as fully supported but may work for simple feeds. * @param array $importer - * The contact_record (joined to user_record) of the local user who owns this + * The channel record of the local user who owns this * relationship. It is this person's stuff that is going to be updated. - * @param[in,out] array $contact + * @param[in,out] array $contact (abook record joined to xchan record) * The person who is sending us stuff. If not set, we MAY be processing a "follow" activity * from an external network and MAY create an appropriate contact record. Otherwise, we MUST * have a contact record. @@ -1057,8 +1101,8 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { // Have we seen it? If not, import it. - $author = array(); - $datarray = get_atom_elements($feed,$item,$author); + $author = get_atom_author($feed,$item); + $datarray = get_atom_elements($feed,$item); if(! $datarray['mid']) continue; @@ -1310,8 +1354,8 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { // Head post of a conversation. Have we seen it? If not, import it. - $author = array(); - $datarray = get_atom_elements($feed,$item,$author); + $author = get_atom_author($feed,$item); + $datarray = get_atom_elements($feed,$item); if(! $datarray['mid']) continue; @@ -1513,11 +1557,11 @@ function normalise_id($id) { */ function process_salmon_feed($xml, $importer) { - $ret = array(); + $ret = []; if(! strlen($xml)) { logger('process_feed: empty input'); - return; + return $ret; } $feed = new SimplePie(); @@ -1531,8 +1575,10 @@ function process_salmon_feed($xml, $importer) { $feed->init(); - if($feed->error()) + if($feed->error()) { logger('Error parsing XML: ' . $feed->error()); + return $ret; + } $permalink = $feed->get_permalink(); @@ -1559,16 +1605,13 @@ function process_salmon_feed($xml, $importer) { if($is_reply) $ret['parent_mid'] = $parent_mid; - $ret['author'] = array(); - - $datarray = get_atom_elements($feed, $item, $ret['author']); + $ret['author'] = get_atom_author($feed,$item); + $ret['item'] = get_atom_elements($feed,$item); // reset policies which are restricted by default for RSS connections // This item is likely coming from GNU-social via salmon and allows public interaction - $datarray['public_policy'] = ''; - $datarray['comment_policy'] = 'authenticated'; - - $ret['item'] = $datarray; + $ret['item']['public_policy'] = ''; + $ret['item']['comment_policy'] = 'authenticated'; } } diff --git a/include/items.php b/include/items.php index c7206458e..68fa4c3b2 100755 --- a/include/items.php +++ b/include/items.php @@ -2327,6 +2327,16 @@ function send_status_notifications($post_id,$item) { $parent = 0; + if(array_key_exists('verb',$item) && (activity_match($item['verb'], ACTIVITY_LIKE) || activity_match($item['verb'], ACTIVITY_DISLIKE))) { + + $r = q("select id from item where mid = '%s' and uid = %d limit 1", + dbesc($item['thr_parent']), + intval($item['uid']) + ); + + $thr_parent_id = $r[0]['id']; + } + $r = q("select channel_hash from channel where channel_id = %d limit 1", intval($item['uid']) ); @@ -2392,10 +2402,10 @@ function send_status_notifications($post_id,$item) { 'to_xchan' => $r[0]['channel_hash'], 'item' => $item, 'link' => $link, - 'verb' => ACTIVITY_POST, + 'verb' => $item['verb'], 'otype' => 'item', - 'parent' => $parent, - 'parent_mid' => $item['parent_mid'] + 'parent' => $thr_parent_id ? $thr_parent_id : $parent, + 'parent_mid' => $thr_parent_id ? $item['thr_parent'] : $item['parent_mid'] )); } @@ -3653,7 +3663,7 @@ function delete_item_lowlevel($item, $stage = DROPITEM_NORMAL, $force = false) { $linked_item = (($item['resource_id']) ? true : false); - logger('item: ' . $item . ' stage: ' . $stage . ' force: ' . $force, LOGGER_DATA); + logger('item: ' . $item['id'] . ' stage: ' . $stage . ' force: ' . $force, LOGGER_DATA); switch($stage) { case DROPITEM_PHASE2: diff --git a/include/js_strings.php b/include/js_strings.php index 1b4668061..936594291 100644 --- a/include/js_strings.php +++ b/include/js_strings.php @@ -24,10 +24,16 @@ function js_strings() { '$leavethispage' => t('Unsaved changes. Are you sure you wish to leave this page?'), '$location' => t('Location'), - '$t01' => ((t('timeago.prefixAgo') != 'timeago.prefixAgo') ? t('timeago.prefixAgo') : ''), - '$t02' => ((t('timeago.prefixFromNow') != 'timeago.prefixFromNow') ? t('timeago.prefixFromNow') : ''), - '$t03' => t('ago'), - '$t04' => t('from now'), + // translatable prefix and suffix strings for jquery.timeago - + // using the defaults set below if left untranslated, empty strings if + // translated to "NONE" and the corresponding language strings + // if translated to anything else + '$t01' => ((t('timeago.prefixAgo') == 'timeago.prefixAgo') ? '' : ((t('timeago.prefixAgo') == 'NONE') ? '' : t('timeago.prefixAgo'))), + '$t02' => ((t('timeago.prefixFromNow') == 'timeago.prefixFromNow') ? '' : ((t('timeago.prefixFromNow') == 'NONE') ? '' : t('timeago.prefixFromNow'))), + '$t03' => ((t('timeago.suffixAgo') == 'timeago.suffixAgo') ? 'ago' : ((t('timeago.suffixAgo') == 'NONE') ? '' : t('timeago.suffixAgo'))), + '$t04' => ((t('timeago.suffixFromNow') == 'timeago.suffixFromNow') ? 'from now' : ((t('timeago.suffixFromNow') == 'NONE') ? '' : t('timeago.suffixFromNow'))), + + // translatable main strings for jquery.timeago '$t05' => t('less than a minute'), '$t06' => t('about a minute'), '$t07' => t('%d minutes'), diff --git a/include/nav.php b/include/nav.php index 9c88541d1..df58ee96f 100644 --- a/include/nav.php +++ b/include/nav.php @@ -73,9 +73,7 @@ EOT; // nav links: array of array('href', 'text', 'extra css classes', 'title') $nav = []; - $disable_discover_tab = get_config('system','disable_discover_tab') || get_config('system','disable_discover_tab') === false; - - if(! $disable_discover_tab) + if(can_view_public_stream()) $nav['pubs'] = true; /** diff --git a/include/network.php b/include/network.php index 2ac430e82..0824183f7 100644 --- a/include/network.php +++ b/include/network.php @@ -1605,10 +1605,10 @@ function get_site_info() { 'commit' => $commit, 'plugins' => $visible_plugins, 'register_policy' => $register_policy[get_config('system','register_policy')], - 'invitation_only' => intval(get_config('system','invitation_only')), + 'invitation_only' => (bool) intval(get_config('system','invitation_only')), 'directory_mode' => $directory_mode[get_config('system','directory_mode')], 'language' => get_config('system','language'), - 'rss_connections' => intval(get_config('system','feed_contacts')), + 'rss_connections' => (bool) intval(get_config('system','feed_contacts')), 'expiration' => $site_expire, 'default_service_restrictions' => $service_class, 'locked_features' => $locked_features, diff --git a/include/plugin.php b/include/plugin.php index 67157dee7..62d443ab8 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -179,14 +179,84 @@ function reload_plugins() { } +function plugins_installed_list() { + + $r = q("select * from addon where installed = 1 order by aname asc"); + return(($r) ? ids_to_array($r,'aname') : []); +} + + +function plugins_sync() { + + /** + * + * Synchronise plugins: + * + * App::$config['system']['addon'] contains a comma-separated list of names + * of plugins/addons which are used on this system. + * Go through the database list of already installed addons, and if we have + * an entry, but it isn't in the config list, call the unload procedure + * and mark it uninstalled in the database (for now we'll remove it). + * Then go through the config list and if we have a plugin that isn't installed, + * call the install procedure and add it to the database. + * + */ + + $installed = plugins_installed_list(); + + $plugins = get_config('system', 'addon', ''); + + $plugins_arr = explode(',', $plugins); + + // array_trim is in include/text.php + + if(! array_walk($plugins_arr,'array_trim')) + return; + + App::$plugins = $plugins_arr; + + $installed_arr = []; + + if(count($installed)) { + foreach($installed as $i) { + if(! in_array($i, $plugins_arr)) { + unload_plugin($i); + } + else { + $installed_arr[] = $i; + } + } + } + + if(count($plugins_arr)) { + foreach($plugins_arr as $p) { + if(! in_array($p, $installed_arr)) { + load_plugin($p); + } + } + } + +} + + /** * @brief Get a list of non hidden addons. * * @return array */ function visible_plugin_list() { + $r = q("select * from addon where hidden = 0 order by aname asc"); - return(($r) ? ids_to_array($r,'aname') : array()); + $x = (($r) ? ids_to_array($r,'aname') : array()); + $y = []; + if($x) { + foreach($x as $xv) { + if(is_dir('addon/' . $xv)) { + $y[] = $xv; + } + } + } + return $y; } diff --git a/include/queue_fn.php b/include/queue_fn.php index 5fb0d5f1e..798ac36db 100644 --- a/include/queue_fn.php +++ b/include/queue_fn.php @@ -121,7 +121,7 @@ function queue_deliver($outq, $immediate = false) { $base = null; $h = parse_url($outq['outq_posturl']); - if($h) + if($h !== false) $base = $h['scheme'] . '://' . $h['host'] . (($h['port']) ? ':' . $h['port'] : ''); if(($base) && ($base !== z_root()) && ($immediate)) { @@ -160,6 +160,9 @@ function queue_deliver($outq, $immediate = false) { + + + $arr = array('outq' => $outq, 'base' => $base, 'handled' => false, 'immediate' => $immediate); call_hooks('queue_deliver',$arr); if($arr['handled']) @@ -216,7 +219,29 @@ function queue_deliver($outq, $immediate = false) { // normal zot delivery logger('deliver: dest: ' . $outq['outq_posturl'], LOGGER_DEBUG); - $result = zot_zot($outq['outq_posturl'],$outq['outq_notify']); + + $channel = null; + + if($outq['outq_msg'] && $outq['outq_channel']) { + $channel = channelx_by_n($outq['outq_channel']); + } + + $host_crypto = null; + + if($channel && $base) { + $h = q("select hubloc_sitekey, site_crypto from hubloc left join site on hubloc_url = site_url where site_url = '%s' order by hubloc_id desc limit 1", + dbesc($base) + ); + if($h) { + $host_crypto = $h[0]; + } + } + + $msg = $outq['outq_notify']; + + $result = zot_zot($outq['outq_posturl'],$msg,$channel,$host_crypto); + + if($result['success']) { logger('deliver: remote zot delivery succeeded to ' . $outq['outq_posturl']); zot_process_response($outq['outq_posturl'],$result, $outq); diff --git a/include/text.php b/include/text.php index 10bbc751a..35a367d43 100644 --- a/include/text.php +++ b/include/text.php @@ -2160,6 +2160,35 @@ function ids_to_querystr($arr,$idx = 'id',$quote = false) { } /** + * @brief array_elm_to_str($arr,$elm,$delim = ',') extract unique individual elements from an array of arrays and return them as a string separated by a delimiter + * similar to ids_to_querystr, but allows a different delimiter instead of a db-quote option + * empty elements (evaluated after trim()) are ignored. + * @param $arr array + * @param $elm array key to extract from sub-array + * @param $delim string default ',' + * @returns string + */ + +function array_elm_to_str($arr,$elm,$delim = ',') { + + $tmp = []; + if($arr && is_array($arr)) { + foreach($arr as $x) { + if(is_array($x) && array_key_exists($elm,$x)) { + $z = trim($x[$elm]); + if(($z) && (! in_array($z,$tmp))) { + $tmp[] = $z; + } + } + } + } + return implode($delim,$tmp); +} + + + + +/** * @brief Fetches xchan and hubloc data for an array of items with only an * author_xchan and owner_xchan. * @@ -3263,29 +3292,3 @@ function purify_filename($s) { } -/** - * @brief array_elm_to_str($arr,$elm,$delim = ',') extract unique individual elements from an array of arrays and return them as a string separated by a delimiter - * - * empty elements (evaluated after trim()) are ignored. - * @param $arr array - * @param $elm array key to extract from sub-array - * @param $delim string default ',' - * @returns string - */ - -function array_elm_to_str($arr,$elm,$delim = ',') { - - $tmp = []; - if($arr && is_array($arr)) { - foreach($arr as $x) { - if(is_array($x) && array_key_exists($elm,$x)) { - $z = trim($x[$elm]); - if(($z) && (! in_array($z,$tmp))) { - $tmp[] = $z; - } - } - } - } - return implode($tmp,$delim); -} - diff --git a/include/zot.php b/include/zot.php index 8e3d03ad8..d28e584a1 100644 --- a/include/zot.php +++ b/include/zot.php @@ -158,6 +158,85 @@ function zot_build_packet($channel, $type = 'notify', $recipients = null, $remot return json_encode($data); } + +/** + * @brief Builds a zot6 notification packet. + * + * Builds a zot6 notification packet that you can either store in the queue with + * a message array or call zot_zot to immediately zot it to the other side. + * + * @param array $channel + * sender channel structure + * @param string $type + * packet type: one of 'ping', 'pickup', 'purge', 'refresh', 'keychange', 'force_refresh', 'notify', 'auth_check' + * @param array $recipients + * envelope information, array ( 'guid' => string, 'guid_sig' => string ); empty for public posts + * @param string $remote_key + * optional public site key of target hub used to encrypt entire packet + * NOTE: remote_key and encrypted packets are required for 'auth_check' packets, optional for all others + * @param string $methods + * optional comma separated list of encryption methods @ref zot_best_algorithm() + * @param string $secret + * random string, required for packets which require verification/callback + * e.g. 'pickup', 'purge', 'notify', 'auth_check'. Packet types 'ping', 'force_refresh', and 'refresh' do not require verification + * @param string $extra + * @returns string json encoded zot packet + */ +function zot6_build_packet($channel, $type = 'notify', $recipients = null, $msg = '', $remote_key = null, $methods = '', $secret = null, $extra = null) { + + $sig_method = get_config('system','signature_algorithm','sha256'); + + $data = [ + 'type' => $type, + 'sender' => [ + 'guid' => $channel['channel_guid'], + 'guid_sig' => base64url_encode(rsa_sign($channel['channel_guid'],$channel['channel_prvkey'],$sig_method)), + 'url' => z_root(), + 'url_sig' => base64url_encode(rsa_sign(z_root(),$channel['channel_prvkey'],$sig_method)), + 'sitekey' => get_config('system','pubkey') + ], + 'callback' => '/post', + 'version' => Zotlabs\Lib\System::get_zot_revision(), + 'encryption' => crypto_methods(), + 'signing' => signing_methods() + ]; + + if ($recipients) { + for ($x = 0; $x < count($recipients); $x ++) + unset($recipients[$x]['hash']); + + $data['recipients'] = $recipients; + } + + if($msg) { + $data['msg'] = $msg; + } + + if ($secret) { + $data['secret'] = preg_replace('/[^0-9a-fA-F]/','',$secret); + $data['secret_sig'] = base64url_encode(rsa_sign($secret,$channel['channel_prvkey'],$sig_method)); + } + + if ($extra) { + foreach ($extra as $k => $v) + $data[$k] = $v; + } + + logger('zot6_build_packet: ' . print_r($data,true), LOGGER_DATA, LOG_DEBUG); + + // Hush-hush ultra top-secret mode + + if($remote_key) { + $algorithm = zot_best_algorithm($methods); + $data = crypto_encapsulate(json_encode($data),$remote_key, $algorithm); + } + + return json_encode($data); +} + + + + /** * @brief Choose best encryption function from those available on both sites. * @@ -209,10 +288,23 @@ function zot_best_algorithm($methods) { * * @param string $url * @param array $data + * @param array $channel (optional if using zot6 delivery) + * @param array $crypto (optional if encrypted httpsig, requires hubloc_sitekey and site_crypto elements) * @return array see z_post_url() for returned data format */ -function zot_zot($url, $data) { - return z_post_url($url, array('data' => $data)); +function zot_zot($url, $data, $channel = null,$crypto = null) { + + $headers = []; + + if($channel) { + $headers['X-Zot-Token'] = random_string(); + $hash = \Zotlabs\Web\HTTPSig::generate_digest($data,false); + $headers['X-Zot-Digest'] = 'SHA-256=' . $hash; + $h = \Zotlabs\Web\HTTPSig::create_sig('',$headers,$channel['channel_prvkey'],'acct:' . $channel['channel_address'] . '@' . \App::get_hostname(),false,false,'sha512',(($crypto) ? $crypto['hubloc_sitekey'] : ''), (($crypto) ? zot_best_algorithm($crypto['site_crypto']) : '')); + } + + $redirects = 0; + return z_post_url($url, array('data' => $data),$redirects,((empty($h)) ? [] : [ 'headers' => $h ])); } /** @@ -1060,7 +1152,12 @@ function zot_process_response($hub, $arr, $outq) { * @brief * * We received a notification packet (in mod_post) that a message is waiting for us, and we've verified the sender. - * Now send back a pickup message, using our message tracking ID ($arr['secret']), which we will sign with our site + * Check if the site is using zot6 delivery and includes a verified HTTP Signature, signed content, and a 'msg' field, + * and also that the signer and the sender match. + * If that happens, we do not need to fetch/pickup the message - we have it already and it is verified. + * Translate it into the form we need for zot_import() and import it. + * + * Otherwise send back a pickup message, using our message tracking ID ($arr['secret']), which we will sign with our site * private key. * The entire pickup message is encrypted with the remote site's public key. * If everything checks out on the remote end, we will receive back a packet containing one or more messages, @@ -1078,38 +1175,61 @@ function zot_fetch($arr) { $url = $arr['sender']['url'] . $arr['callback']; - // set $multiple param on zot_gethub() to return all matching hubs - // This allows us to recover from re-installs when a redundant (but invalid) hubloc for - // this identity is widely dispersed throughout the network. + $import = null; + $hubs = null; + + $zret = zot6_check_sig(); - $ret_hubs = zot_gethub($arr['sender'],true); - if(! $ret_hubs) { + if($zret['success'] && $zret['hubloc'] && $zret['hubloc']['hubloc_guid'] === $data['sender']['guid'] && $data['msg']) { + logger('zot6_delivery',LOGGER_DEBUG); + logger('zot6_data: ' . print_r($data,true),LOGGER_DATA); + + $ret['collected'] = true; + + $import = [ 'success' => true, 'body' => json_encode( [ 'success' => true, 'pickup' => [ [ 'notify' => $data, 'message' => json_decode($data['msg'],true) ] ] ] ) ]; + $hubs = [ $zret['hubloc'] ] ; + } + + if(! $hubs) { + // set $multiple param on zot_gethub() to return all matching hubs + // This allows us to recover from re-installs when a redundant (but invalid) hubloc for + // this identity is widely dispersed throughout the network. + + $hubs = zot_gethub($arr['sender'],true); + } + + if(! $hubs) { logger('No hub: ' . print_r($arr['sender'],true)); return; } - foreach($ret_hubs as $ret_hub) { + foreach($hubs as $hub) { - $secret = substr(preg_replace('/[^0-9a-fA-F]/','',$arr['secret']),0,64); + if(! $import) { + $secret = substr(preg_replace('/[^0-9a-fA-F]/','',$arr['secret']),0,64); - $data = [ - 'type' => 'pickup', - 'url' => z_root(), - 'callback_sig' => base64url_encode(rsa_sign(z_root() . '/post', get_config('system','prvkey'))), - 'callback' => z_root() . '/post', - 'secret' => $secret, - 'secret_sig' => base64url_encode(rsa_sign($secret, get_config('system','prvkey'))) - ]; + $data = [ + 'type' => 'pickup', + 'url' => z_root(), + 'callback_sig' => base64url_encode(rsa_sign(z_root() . '/post', get_config('system','prvkey'))), + 'callback' => z_root() . '/post', + 'secret' => $secret, + 'secret_sig' => base64url_encode(rsa_sign($secret, get_config('system','prvkey'))) + ]; - $algorithm = zot_best_algorithm($ret_hub['site_crypto']); - $datatosend = json_encode(crypto_encapsulate(json_encode($data),$ret_hub['hubloc_sitekey'], $algorithm)); + $algorithm = zot_best_algorithm($hub['site_crypto']); + $datatosend = json_encode(crypto_encapsulate(json_encode($data),$hub['hubloc_sitekey'], $algorithm)); - $fetch = zot_zot($url,$datatosend); + $import = zot_zot($url,$datatosend); + } + else { + $algorithm = zot_best_algorithm($hub['site_crypto']); + } - $result = zot_import($fetch, $arr['sender']['url']); + $result = zot_import($import, $arr['sender']['url']); if($result) { - $result = crypto_encapsulate(json_encode($result),$ret_hub['hubloc_sitekey'], $algorithm); + $result = crypto_encapsulate(json_encode($result),$hub['hubloc_sitekey'], $algorithm); return $result; } @@ -4967,6 +5087,39 @@ function zot_reply_refresh($sender, $recipients) { } +function zot6_check_sig() { + + $ret = [ 'success' => false ]; + + logger('server: ' . print_r($_SERVER,true), LOGGER_DATA); + + if(array_key_exists('HTTP_SIGNATURE',$_SERVER)) { + $sigblock = \Zotlabs\Web\HTTPSig::parse_sigheader($_SERVER['HTTP_SIGNATURE']); + if($sigblock) { + $keyId = $sigblock['keyId']; + + if($keyId) { + $r = q("select hubloc.*, site_crypto from hubloc left join site on hubloc_url = site_url + where hubloc_addr = '%s' ", + dbesc(str_replace('acct:','',$keyId)) + ); + if($r) { + foreach($r as $hubloc) { + $verified = \Zotlabs\Web\HTTPSig::verify('',$hubloc['xchan_pubkey']); + if($verified && $verified['header_signed'] && $verified['header_valid'] && $verified['content_signed'] && $verified['content_valid']) { + $ret['hubloc'] = $hubloc; + $ret['success'] = true; + return $ret; + } + } + } + } + } + } + + return $ret; +} + function zot_reply_notify($data) { $ret = array('success' => false); diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql index 673e4cd75..36cd2539b 100644 --- a/install/schema_mysql.sql +++ b/install/schema_mysql.sql @@ -644,7 +644,6 @@ CREATE TABLE IF NOT EXISTS `item` ( `item_pending_remove` tinyint(1) NOT NULL DEFAULT 0 , `item_blocked` tinyint(1) NOT NULL DEFAULT 0 , PRIMARY KEY (`id`), - KEY `uid` (`uid`), KEY `parent` (`parent`), KEY `created` (`created`), KEY `edited` (`edited`), @@ -652,6 +651,12 @@ CREATE TABLE IF NOT EXISTS `item` ( KEY `uid_commented` (`uid`, `commented`), KEY `uid_created` (`uid`, `created`), KEY `uid_item_unseen` (`uid`, `item_unseen`), + KEY `uid_item_type` (`uid`, `item_type`), + KEY `uid_item_thread_top` (`uid`, `item_thread_top`), + KEY `uid_item_blocked` (`uid`, `item_blocked`), + KEY `uid_item_wall` (`uid`, `item_wall`), + KEY `uid_item_starred` (`uid`, `item_starred`), + KEY `uid_item_retained` (`uid`, `item_retained`), KEY `aid` (`aid`), KEY `owner_xchan` (`owner_xchan`), KEY `author_xchan` (`author_xchan`), @@ -677,10 +682,7 @@ CREATE TABLE IF NOT EXISTS `item` ( KEY `changed` (`changed`), KEY `item_origin` (`item_origin`), KEY `item_unseen` (`item_unseen`), - KEY `item_starred` (`item_starred`), KEY `item_uplink` (`item_uplink`), - KEY `item_wall` (`item_wall`), - KEY `item_thread_top` (`item_thread_top`), KEY `item_notshown` (`item_notshown`), KEY `item_nsfw` (`item_nsfw`), KEY `item_relay` (`item_relay`), @@ -688,16 +690,9 @@ CREATE TABLE IF NOT EXISTS `item` ( KEY `item_nocomment` (`item_nocomment`), KEY `item_obscured` (`item_obscured`), KEY `item_verified` (`item_verified`), - KEY `item_retained` (`item_retained`), KEY `item_rss` (`item_rss`), - KEY `item_deleted` (`item_deleted`), - KEY `item_type` (`item_type`), - KEY `item_hidden` (`item_hidden`), KEY `item_consensus` (`item_consensus`), - KEY `item_unpublished` (`item_unpublished`), - KEY `item_delayed` (`item_delayed`), - KEY `item_pending_remove` (`item_pending_remove`), - KEY `item_blocked` (`item_blocked`) + KEY `item_deleted_pending_remove_changed` (`item_deleted`, `item_pending_remove`, `changed`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `item_id` ( diff --git a/install/update.php b/install/update.php deleted file mode 100644 index f7b9b03ed..000000000 --- a/install/update.php +++ /dev/null @@ -1,3072 +0,0 @@ -<?php - -define( 'UPDATE_VERSION' , 1198 ); - -/** - * - * update.php - automatic system update - * - * Automatically update database schemas and any other development changes such that - * copying the latest files from the source code repository will always perform a clean - * and painless upgrade. - * - * Each function in this file is named update_rnnnn() where nnnn is an increasing number - * which began counting at 1000. - * - * At the top of the file "boot.php" is a define for DB_UPDATE_VERSION. Any time there is a change - * to the database schema or one which requires an upgrade path from the existing application, - * the DB_UPDATE_VERSION and the UPDATE_VERSION at the top of this file are incremented. - * - * The current DB_UPDATE_VERSION is stored in the config area of the database. If the application starts up - * and DB_UPDATE_VERSION is greater than the last stored build number, we will process every update function - * in order from the currently stored value to the new DB_UPDATE_VERSION. This is expected to bring the system - * up to current without requiring re-installation or manual intervention. - * - * Once the upgrade functions have completed, the current DB_UPDATE_VERSION is stored as the current value. - * The DB_UPDATE_VERSION will always be one greater than the last numbered script in this file. - * - * If you change the database schema, the following are required: - * 1. Update the files schema_mysql.sql and schema_postgres.sql to match the new schema. - * Be sure to read doc/sql_conventions.bb ($yoururl/help/sql_conventions) use only standard - * SQL data types where possible to keep differences in the files to a minimum - * 2. Update this file by adding a new function at the end with the number of the current DB_UPDATE_VERSION. - * This function should modify the current database schema and perform any other steps necessary - * to ensure that upgrade is silent and free from requiring interaction. Review to ensure that it - * will run correctly on both postgres and MySQL/Mariadb. It is very difficult and messy to fix DB update - * errors. Once pushed, it requires a new update which undoes any damage and performs the corrected updated. - * 3. Increment the DB_UPDATE_VERSION in boot.php *AND* the UPDATE_VERSION in this file to match it - * 4. TEST the upgrade prior to checkin and filing a pull request. - * - */ - -function update_r1000() { - $r = q("ALTER TABLE `channel` ADD `channel_a_delegate` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '0', ADD INDEX ( `channel_a_delegate` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1001() { - $r = q("CREATE TABLE if not exists `verify` ( - `id` INT(10) UNSIGNED NOT NULL , - `channel` INT(10) UNSIGNED NOT NULL DEFAULT '0', - `type` CHAR( 32 ) NOT NULL DEFAULT '', - `token` CHAR( 255 ) NOT NULL DEFAULT '', - `meta` CHAR( 255 ) NOT NULL DEFAULT '', - `created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY ( `id` ) - ) ENGINE = MYISAM DEFAULT CHARSET=utf8"); - - $r2 = q("alter table `verify` add index (`channel`), add index (`type`), add index (`token`), - add index (`meta`), add index (`created`)"); - - if($r && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1002() { - $r = q("ALTER TABLE `event` CHANGE `account` `aid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r2 = q("alter table `event` drop index `account`, add index (`aid`)"); - - q("drop table contact"); - q("drop table deliverq"); - - if($r && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1003() { - $r = q("ALTER TABLE `xchan` ADD `xchan_flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `xchan_network` , -ADD INDEX ( `xchan_flags` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1004() { - $r = q("CREATE TABLE if not exists `site` ( -`site_url` CHAR( 255 ) NOT NULL , -`site_flags` INT NOT NULL DEFAULT '0', -`site_update` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', -`site_directory` CHAR( 255 ) NOT NULL DEFAULT '', -PRIMARY KEY ( `site_url` ) -) ENGINE = MYISAM DEFAULT CHARSET=utf8"); - - $r2 = q("alter table site add index (site_flags), add index (site_update), add index (site_directory) "); - - if($r && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1005() { - q("drop table guid"); - q("drop table `notify-threads`"); - return UPDATE_SUCCESS; -} - -function update_r1006() { - - $r = q("CREATE TABLE IF NOT EXISTS `xprof` ( - `xprof_hash` char(255) NOT NULL, - `xprof_desc` char(255) NOT NULL DEFAULT '', - `xprof_dob` char(12) NOT NULL DEFAULT '', - `xprof_gender` char(255) NOT NULL DEFAULT '', - `xprof_marital` char(255) NOT NULL DEFAULT '', - `xprof_sexual` char(255) NOT NULL DEFAULT '', - `xprof_locale` char(255) NOT NULL DEFAULT '', - `xprof_region` char(255) NOT NULL DEFAULT '', - `xprof_postcode` char(32) NOT NULL DEFAULT '', - `xprof_country` char(255) NOT NULL DEFAULT '', - PRIMARY KEY (`xprof_hash`), - KEY `xprof_desc` (`xprof_desc`), - KEY `xprof_dob` (`xprof_dob`), - KEY `xprof_gender` (`xprof_gender`), - KEY `xprof_marital` (`xprof_marital`), - KEY `xprof_sexual` (`xprof_sexual`), - KEY `xprof_locale` (`xprof_locale`), - KEY `xprof_region` (`xprof_region`), - KEY `xprof_postcode` (`xprof_postcode`), - KEY `xprof_country` (`xprof_country`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8"); - - $r2 = q("CREATE TABLE IF NOT EXISTS `xtag` ( - `xtag_hash` char(255) NOT NULL, - `xtag_term` char(255) NOT NULL DEFAULT '', - PRIMARY KEY (`xtag_hash`), - KEY `xtag_term` (`xtag_term`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8"); - - if($r && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1007() { - $r = q("ALTER TABLE `channel` ADD `channel_r_storage` INT UNSIGNED NOT NULL DEFAULT '128', ADD `channel_w_storage` INT UNSIGNED NOT NULL DEFAULT '128', add index ( channel_r_storage ), add index ( channel_w_storage )"); - - if($r && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1008() { - $r = q("alter table profile drop prv_keywords, CHANGE `pub_keywords` `keywords` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, drop index pub_keywords"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1009() { - $r = q("ALTER TABLE `xprof` ADD `xprof_keywords` TEXT NOT NULL"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1010() { - $r = q("ALTER TABLE `abook` ADD `abook_dob` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `abook_connnected` , -ADD INDEX ( `abook_dob` )"); - - $r2 = q("ALTER TABLE `profile` ADD `dob_tz` CHAR( 255 ) NOT NULL DEFAULT 'UTC' AFTER `dob`"); - - if($r && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1011() { - $r = q("ALTER TABLE `item` ADD `expires` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `edited` , -ADD INDEX ( `expires` )"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1012() { - $r = q("ALTER TABLE `xchan` ADD `xchan_connurl` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_url` , -ADD INDEX ( `xchan_connurl` )"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1013() { - $r = q("CREATE TABLE if not exists `xlink` ( -`xlink_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , -`xlink_xchan` CHAR( 255 ) NOT NULL DEFAULT '', -`xlink_link` CHAR( 255 ) NOT NULL DEFAULT '', -`xlink_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' -) ENGINE = MYISAM DEFAULT CHARSET=utf8"); - - $r2 = q("alter table xlink add index ( xlink_xchan ), add index ( xlink_link ), add index ( xlink_updated ) "); - if($r && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1014() { - $r = q("ALTER TABLE `verify` CHANGE `id` `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1015() { - $r = q("ALTER TABLE `channel` ADD `channel_r_pages` INT UNSIGNED NOT NULL DEFAULT '128', -ADD `channel_w_pages` INT UNSIGNED NOT NULL DEFAULT '128'"); - - $r2 = q("ALTER TABLE `channel` ADD INDEX ( `channel_r_pages` ) , ADD INDEX ( `channel_w_pages` ) "); - - if($r && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1016() { - - $r = q("CREATE TABLE IF NOT EXISTS `menu` ( - `menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `menu_channel_id` int(10) unsigned NOT NULL DEFAULT '0', - `menu_desc` char(255) NOT NULL DEFAULT '', - PRIMARY KEY (`menu_id`), - KEY `menu_channel_id` (`menu_channel_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - $r2 = q("CREATE TABLE IF NOT EXISTS `menu_item` ( - `mitem_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `mitem_link` char(255) NOT NULL DEFAULT '', - `mitem_desc` char(255) NOT NULL DEFAULT '', - `allow_cid` mediumtext NOT NULL, - `allow_gid` mediumtext NOT NULL, - `deny_cid` mediumtext NOT NULL, - `deny_gid` mediumtext NOT NULL, - `mitem_channel_id` int(10) unsigned NOT NULL, - `mitem_menu_id` int(10) unsigned NOT NULL DEFAULT '0', - `mitem_order` int(11) NOT NULL DEFAULT '0', - PRIMARY KEY (`mitem_id`), - KEY `mitem_channel_id` (`mitem_channel_id`), - KEY `mitem_menu_id` (`mitem_menu_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - - if($r && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1017() { - $r = q("ALTER TABLE `event` CHANGE `cid` `event_xchan` CHAR( 255 ) NOT NULL DEFAULT '', ADD INDEX ( `event_xchan` ), drop index cid "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1018() { - $r = q("ALTER TABLE `event` ADD `event_hash` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `event_xchan` , -ADD INDEX ( `event_hash` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1019() { - $r = q("ALTER TABLE `event` DROP `message_id` "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1020() { - $r = q("alter table photo drop `contact-id`, drop guid, drop index `resource-id`, add index ( `resource_id` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1021() { - - $r = q("ALTER TABLE `abook` CHANGE `abook_connnected` `abook_connected` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', - drop index `abook_connnected`, add index ( `abook_connected` ) "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1022() { - $r = q("alter table attach add index ( filename ), add index ( filetype ), add index ( filesize ), add index ( created ), add index ( edited ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1023() { - $r = q("ALTER TABLE `item` ADD `revision` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `lang` , add index ( revision ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1024() { - $r = q("ALTER TABLE `attach` ADD `revision` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `filesize` , -ADD INDEX ( `revision` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1025() { - $r = q("ALTER TABLE `attach` ADD `folder` CHAR( 64 ) NOT NULL DEFAULT '' AFTER `revision` , -ADD `flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `folder` , add index ( folder ), add index ( flags )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1026() { - $r = q("ALTER TABLE `item` ADD `mimetype` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `author_xchan` , -ADD INDEX ( `mimetype` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1027() { - $r = q("ALTER TABLE `abook` ADD `abook_rating` INT NOT NULL DEFAULT '0' AFTER `abook_closeness` , -ADD INDEX ( `abook_rating` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1028() { - $r = q("ALTER TABLE `xlink` ADD `xlink_rating` INT NOT NULL DEFAULT '0' AFTER `xlink_link` , -ADD INDEX ( `xlink_rating` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1029() { - $r = q("ALTER TABLE `channel` ADD `channel_deleted` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_pageflags` , -ADD INDEX ( `channel_deleted` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1030() { - $r = q("CREATE TABLE IF NOT EXISTS `issue` ( -`issue_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , -`issue_created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', -`issue_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', -`issue_assigned` CHAR( 255 ) NOT NULL , -`issue_priority` INT NOT NULL , -`issue_status` INT NOT NULL , -`issue_component` CHAR( 255 ) NOT NULL, -KEY `issue_created` (`issue_created`), -KEY `issue_updated` (`issue_updated`), -KEY `issue_assigned` (`issue_assigned`), -KEY `issue_priority` (`issue_priority`), -KEY `issue_status` (`issue_status`), -KEY `issue_component` (`issue_component`) -) ENGINE = MYISAM DEFAULT CHARSET=utf8"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1031() { - $r = q("ALTER TABLE `account` ADD `account_external` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `account_email` , -ADD INDEX ( `account_external` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1032() { - $r = q("CREATE TABLE if not exists `xign` ( -`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , -`uid` INT NOT NULL DEFAULT '0', -`xchan` CHAR( 255 ) NOT NULL DEFAULT '', -KEY `uid` (`uid`), -KEY `xchan` (`xchan`) -) ENGINE = MYISAM DEFAULT CHARSET = utf8"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1033() { - $r = q("CREATE TABLE if not exists `shares` ( -`share_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , -`share_type` INT NOT NULL DEFAULT '0', -`share_target` INT UNSIGNED NOT NULL DEFAULT '0', -`share_xchan` CHAR( 255 ) NOT NULL DEFAULT '', -KEY `share_type` (`share_type`), -KEY `share_target` (`share_target`), -KEY `share_xchan` (`share_xchan`) -) ENGINE = MYISAM DEFAULT CHARSET = utf8"); - - // if these fail don't bother reporting it - - q("drop table gcign"); - q("drop table gcontact"); - q("drop table glink"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1034() { - $r = q("CREATE TABLE if not exists `updates` ( -`ud_hash` CHAR( 128 ) NOT NULL , -`ud_date` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', -PRIMARY KEY ( `ud_hash` ), -KEY `ud_date` ( `ud_date` ) -) ENGINE = MYISAM DEFAULT CHARSET = utf8"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1035() { - $r = q("CREATE TABLE if not exists `xconfig` ( -`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , -`xchan` CHAR( 255 ) NOT NULL , -`cat` CHAR( 255 ) NOT NULL , -`k` CHAR( 255 ) NOT NULL , -`v` MEDIUMTEXT NOT NULL, -KEY `xchan` ( `xchan` ), -KEY `cat` ( `cat` ), -KEY `k` ( `k` ) -) ENGINE = MYISAM DEFAULT CHARSET = utf8"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1036() { - $r = q("ALTER TABLE `profile` ADD `channels` TEXT NOT NULL AFTER `contact` "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - - -function update_r1037() { - $r1 = q("ALTER TABLE `item` CHANGE `uri` `mid` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '', -CHANGE `parent_uri` `parent_mid` CHAR( 255 ) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '', - DROP INDEX `uri` , -ADD INDEX `mid` ( `mid` ), -DROP INDEX `parent_uri` , -ADD INDEX `parent_mid` ( `parent_mid` ), - DROP INDEX `uid_uri` , -ADD INDEX `uid_mid` ( `mid` , `uid` ) "); - - $r2 = q("ALTER TABLE `mail` CHANGE `uri` `mid` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , -CHANGE `parent_uri` `parent_mid` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , -DROP INDEX `uri` , -ADD INDEX `mid` ( `mid` ), - DROP INDEX `parent_uri` , -ADD INDEX `parent_mid` ( `parent_mid` ) "); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1038() { - $r = q("ALTER TABLE `manage` CHANGE `mid` `xchan` CHAR( 255 ) NOT NULL DEFAULT '', drop index `mid`, ADD INDEX ( `xchan` )"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - - -function update_r1039() { - $r = q("ALTER TABLE `channel` CHANGE `channel_default_gid` `channel_default_group` CHAR( 255 ) NOT NULL DEFAULT ''"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1040() { - $r1 = q("ALTER TABLE `session` CHANGE `expire` `expire` BIGINT UNSIGNED NOT NULL "); - $r2 = q("ALTER TABLE `tokens` CHANGE `expires` `expires` BIGINT UNSIGNED NOT NULL "); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1041() { - $r = q("ALTER TABLE `outq` ADD `outq_driver` CHAR( 32 ) NOT NULL DEFAULT '' AFTER `outq_channel` "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1042() { - $r = q("ALTER TABLE `hubloc` ADD `hubloc_updated` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', -ADD `hubloc_connected` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( `hubloc_updated` ), ADD INDEX ( `hubloc_connected` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1043() { - $r = q("ALTER TABLE `item` ADD `comment_policy` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `coord` , -ADD INDEX ( `comment_policy` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1044() { - $r = q("ALTER TABLE `term` ADD `imgurl` CHAR( 255 ) NOT NULL , -ADD INDEX ( `imgurl` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1045() { - $r = q("ALTER TABLE `site` ADD `site_register` INT NOT NULL DEFAULT '0', -ADD INDEX ( `site_register` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1046() { - $r = q("ALTER TABLE `term` ADD `term_hash` CHAR( 255 ) NOT NULL DEFAULT '', -ADD INDEX ( `term_hash` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1047() { - $r = q("ALTER TABLE `xprof` ADD `xprof_age` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `xprof_hash` , -ADD INDEX ( `xprof_age` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1048() { - $r = q("CREATE TABLE IF NOT EXISTS `obj` ( - `obj_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `obj_page` char(64) NOT NULL DEFAULT '', - `obj_verb` char(255) NOT NULL DEFAULT '', - `obj_type` int(10) unsigned NOT NULL DEFAULT '0', - `obj_obj` char(255) NOT NULL DEFAULT '', - `obj_channel` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`obj_id`), - KEY `obj_verb` (`obj_verb`), - KEY `obj_page` (`obj_page`), - KEY `obj_type` (`obj_type`), - KEY `obj_channel` (`obj_channel`), - KEY `obj_obj` (`obj_obj`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1049() { - $r = q("ALTER TABLE `term` ADD `parent_hash` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `term_hash` , ADD INDEX ( `parent_hash` ) "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1050() { - $r = q("ALTER TABLE `xtag` DROP PRIMARY KEY , ADD `xtag_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST , ADD INDEX ( `xtag_hash` ) "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1051() { - $r = q("ALTER TABLE `photo` ADD `photo_flags` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `profile` , ADD INDEX ( `photo_flags` ) "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1052() { - $r = q("ALTER TABLE `channel` ADD UNIQUE (`channel_address`) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1053() { - $r = q("ALTER TABLE `profile` ADD `chandesc` TEXT NOT NULL DEFAULT '' AFTER `pdesc` "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1054() { - $r = q("ALTER TABLE `item` CHANGE `title` `title` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1055() { - $r = q("ALTER TABLE `mail` CHANGE `title` `title` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1056() { - $r = q("ALTER TABLE `xchan` ADD `xchan_instance_url` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_network` , -ADD INDEX ( `xchan_instance_url` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1057() { - $r = q("drop table intro"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1058() { - $r1 = q("ALTER TABLE `menu` ADD `menu_name` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `menu_channel_id` , -ADD INDEX ( `menu_name` ) "); - - $r2 = q("ALTER TABLE `menu_item` ADD `mitem_flags` INT NOT NULL DEFAULT '0' AFTER `mitem_desc` , -ADD INDEX ( `mitem_flags` ) "); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1059() { - $r = q("ALTER TABLE `mail` ADD `attach` MEDIUMTEXT NOT NULL DEFAULT '' AFTER `body` "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1060() { - - $r = q("CREATE TABLE IF NOT EXISTS `vote` ( - `vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `vote_poll` int(11) NOT NULL DEFAULT '0', - `vote_element` int(11) NOT NULL DEFAULT '0', - `vote_result` text NOT NULL, - `vote_xchan` char(255) NOT NULL DEFAULT '', - PRIMARY KEY (`vote_id`), - UNIQUE KEY `vote_vote` (`vote_poll`,`vote_element`,`vote_xchan`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1061() { - $r = q("ALTER TABLE `vote` ADD INDEX ( `vote_poll` ), ADD INDEX ( `vote_element` ) "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1062() { - $r1 = q("CREATE TABLE IF NOT EXISTS `poll` ( -`poll_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , -`poll_channel` INT UNSIGNED NOT NULL DEFAULT '0', -`poll_desc` TEXT NOT NULL DEFAULT '', -`poll_flags` INT NOT NULL DEFAULT '0', -`poll_votes` INT NOT NULL DEFAULT '0', -KEY `poll_channel` (`poll_channel`), -KEY `poll_flags` (`poll_flags`), -KEY `poll_votes` (`poll_votes`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - $r2 = q("CREATE TABLE IF NOT EXISTS `poll_elm` ( -`pelm_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , -`pelm_poll` INT UNSIGNED NOT NULL DEFAULT '0', -`pelm_desc` TEXT NOT NULL DEFAULT '', -`pelm_flags` INT NOT NULL DEFAULT '0', -`pelm_result` FLOAT NOT NULL DEFAULT '0', -KEY `pelm_poll` (`pelm_poll`), -KEY `pelm_result` (`pelm_result`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1063() { - $r = q("ALTER TABLE `xchan` ADD `xchan_follow` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_connurl` , -ADD `xchan_connpage` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `xchan_follow` , -ADD INDEX ( `xchan_follow` ), ADD INDEX ( `xchan_connpage`) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1064() { - $r = q("ALTER TABLE `updates` ADD `ud_guid` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `ud_hash` , -ADD INDEX ( `ud_guid` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1065() { - $r = q("ALTER TABLE `item` DROP `wall`, ADD `layout_mid` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `target` , -ADD INDEX ( `layout_mid` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1066() { - $r = q("ALTER TABLE `site` ADD `site_access` INT NOT NULL DEFAULT '0' AFTER `site_url` , -ADD INDEX ( `site_access` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1067() { - $r = q("ALTER TABLE `updates` DROP PRIMARY KEY , ADD `ud_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST, ADD INDEX ( `ud_hash` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1068(){ - $r = q("ALTER TABLE `hubloc` ADD `hubloc_status` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `hubloc_flags` , ADD INDEX ( `hubloc_status` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1069() { - $r = q("ALTER TABLE `site` ADD `site_sellpage` CHAR( 255 ) NOT NULL DEFAULT '', -ADD INDEX ( `site_sellpage` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1070() { - $r = q("ALTER TABLE `updates` ADD `ud_flags` INT NOT NULL DEFAULT '0', -ADD INDEX ( `ud_flags` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1071() { - $r = q("ALTER TABLE `updates` ADD `ud_addr` CHAR( 255 ) NOT NULL DEFAULT '', -ADD INDEX ( `ud_addr` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1072() { - $r = q("ALTER TABLE `xtag` ADD `xtag_flags` INT NOT NULL DEFAULT '0', -ADD INDEX ( `xtag_flags` ) "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1073() { - $r1 = q("CREATE TABLE IF NOT EXISTS `source` ( -`src_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , -`src_channel_id` INT UNSIGNED NOT NULL DEFAULT '0', -`src_channel_xchan` CHAR( 255 ) NOT NULL DEFAULT '', -`src_xchan` CHAR( 255 ) NOT NULL DEFAULT '', -`src_patt` MEDIUMTEXT NOT NULL DEFAULT '' -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - $r2 = q("ALTER TABLE `source` ADD INDEX ( `src_channel_id` ), ADD INDEX ( `src_channel_xchan` ), ADD INDEX ( `src_xchan` ) "); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1074() { - $r1 = q("ALTER TABLE `site` ADD `site_sync` DATETIME NOT NULL AFTER `site_update` "); - - $r2 = q("ALTER TABLE `updates` ADD `ud_last` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `ud_date` , -ADD INDEX ( `ud_last` ) "); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1075() { - $r = q("ALTER TABLE `channel` ADD `channel_a_republish` INT UNSIGNED NOT NULL DEFAULT '128', -ADD INDEX ( `channel_a_republish` )"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1076() { - $r = q("ALTER TABLE `item` CHANGE `inform` `sig` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1077() { - $r = q("ALTER TABLE `item` ADD `source_xchan` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `author_xchan` "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1078() { - $r = q("ALTER TABLE `channel` ADD `channel_dirdate` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_pageflags` , ADD INDEX ( `channel_dirdate` )"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1079() { - $r = q("ALTER TABLE `site` ADD `site_location` CHAR( 255 ) NOT NULL DEFAULT ''"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1080() { - $r = q("ALTER TABLE `mail` ADD `expires` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', -ADD INDEX ( `expires` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1081() { - $r = q("DROP TABLE `queue` "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1082() { - $r = q("DROP TABLE `challenge` "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1083() { - $r = q("ALTER TABLE `notify` ADD `aid` INT NOT NULL AFTER `msg` , -ADD INDEX ( `aid` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1084() { - - - $r = q("CREATE TABLE if not exists `sys_perms` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , - `cat` CHAR( 255 ) NOT NULL , - `k` CHAR( 255 ) NOT NULL , - `v` MEDIUMTEXT NOT NULL, - `public_perm` TINYINT( 1 ) UNSIGNED NOT NULL -) ENGINE = MYISAM DEFAULT CHARSET = utf8"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1085() { - $r1 = q("ALTER TABLE `photo` CHANGE `desc` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL "); - - $r2 = q("RENAME TABLE `group` TO `groups`"); - - $r3 = q("ALTER TABLE `event` CHANGE `desc` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL "); - - if($r1 && $r2 && $r3) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1086() { - $r = q("ALTER TABLE `account` ADD `account_level` INT UNSIGNED NOT NULL DEFAULT '0', -ADD INDEX ( `account_level` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1087() { - $r = q("ALTER TABLE `xprof` ADD `xprof_about` TEXT NOT NULL DEFAULT '', -ADD `xprof_homepage` CHAR( 255 ) NOT NULL DEFAULT '', -ADD `xprof_hometown` CHAR( 255 ) NOT NULL DEFAULT '', -ADD INDEX ( `xprof_hometown` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1088() { - $r = q("ALTER TABLE `obj` ADD `allow_cid` MEDIUMTEXT NOT NULL DEFAULT '', -ADD `allow_gid` MEDIUMTEXT NOT NULL DEFAULT '', -ADD `deny_cid` MEDIUMTEXT NOT NULL DEFAULT '', -ADD `deny_gid` MEDIUMTEXT NOT NULL DEFAULT ''"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1089() { - $r = q("ALTER TABLE `attach` ADD `creator` CHAR( 128 ) NOT NULL DEFAULT '' AFTER `hash` , -ADD INDEX ( `creator` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1090() { - $r = q("ALTER TABLE `menu` ADD `menu_flags` INT NOT NULL DEFAULT '0', -ADD INDEX ( `menu_flags` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1091() { - @os_mkdir('store/[data]/smarty3',STORAGE_DEFAULT_PERMISSIONS,true); - @file_put_contents('store/[data]/locks',''); - return UPDATE_SUCCESS; -} - -function update_r1092() { - $r1 = q("CREATE TABLE IF NOT EXISTS `chat` ( - `chat_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `chat_room` int(10) unsigned NOT NULL DEFAULT '0', - `chat_xchan` char(255) NOT NULL DEFAULT '', - `chat_text` mediumtext NOT NULL, - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY (`chat_id`), - KEY `chat_room` (`chat_room`), - KEY `chat_xchan` (`chat_xchan`), - KEY `created` (`created`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8"); - - $r2 = q("CREATE TABLE IF NOT EXISTS `chatpresence` ( - `cp_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `cp_room` int(10) unsigned NOT NULL DEFAULT '0', - `cp_xchan` char(255) NOT NULL DEFAULT '', - `cp_last` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `cp_status` char(255) NOT NULL, - PRIMARY KEY (`cp_id`), - KEY `cp_room` (`cp_room`), - KEY `cp_xchan` (`cp_xchan`), - KEY `cp_last` (`cp_last`), - KEY `cp_status` (`cp_status`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8"); - - $r3 = q("CREATE TABLE IF NOT EXISTS `chatroom` ( - `cr_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `cr_aid` int(10) unsigned NOT NULL DEFAULT '0', - `cr_uid` int(10) unsigned NOT NULL DEFAULT '0', - `cr_name` char(255) NOT NULL DEFAULT '', - `cr_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `cr_edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `allow_cid` mediumtext NOT NULL, - `allow_gid` mediumtext NOT NULL, - `deny_cid` mediumtext NOT NULL, - `deny_gid` mediumtext NOT NULL, - PRIMARY KEY (`cr_id`), - KEY `cr_aid` (`cr_aid`), - KEY `cr_uid` (`cr_uid`), - KEY `cr_name` (`cr_name`), - KEY `cr_created` (`cr_created`), - KEY `cr_edited` (`cr_edited`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8"); - - - if($r1 && $r2 && $r3) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - - - -function update_r1093() { - $r = q("ALTER TABLE `chatpresence` ADD `cp_client` CHAR( 128 ) NOT NULL DEFAULT ''"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1094() { - $r = q("ALTER TABLE `chatroom` ADD `cr_expire` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `cr_edited` , -ADD INDEX ( `cr_expire` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1095() { - $r = q("ALTER TABLE `channel` ADD `channel_a_bookmark` INT UNSIGNED NOT NULL DEFAULT '128', -ADD INDEX ( `channel_a_bookmark` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1096() { - $r = q("ALTER TABLE `account` CHANGE `account_level` `account_level` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1097() { - - // fix some mangled hublocs from a bug long ago - - $r = q("select hubloc_id, hubloc_addr from hubloc where hubloc_addr like '%%/%%'"); - if($r) { - foreach($r as $rr) { - q("update hubloc set hubloc_addr = '%s' where hubloc_id = %d", - dbesc(substr($rr['hubloc_addr'],0,strpos($rr['hubloc_addr'],'/'))), - intval($rr['hubloc_id']) - ); - } - } - return UPDATE_SUCCESS; - -} - -function update_r1098() { - $r = q("ALTER TABLE `channel` CHANGE `channel_r_stream` `channel_r_stream` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r2 = q("ALTER TABLE `channel` CHANGE `channel_r_profile` `channel_r_profile` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r3 = q("ALTER TABLE `channel` CHANGE `channel_r_photos` `channel_r_photos` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r4 = q("ALTER TABLE `channel` CHANGE `channel_r_abook` `channel_r_abook` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r4 = q("ALTER TABLE `channel` CHANGE `channel_w_stream` `channel_w_stream` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r5 = q("ALTER TABLE `channel` CHANGE `channel_w_wall` `channel_w_wall` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r6 = q("ALTER TABLE `channel` CHANGE `channel_w_tagwall` `channel_w_tagwall` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r7 = q("ALTER TABLE `channel` CHANGE `channel_w_comment` `channel_w_comment` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r8 = q("ALTER TABLE `channel` CHANGE `channel_w_mail` `channel_w_mail` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r9 = q("ALTER TABLE `channel` CHANGE `channel_w_photos` `channel_w_photos` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r10 = q("ALTER TABLE `channel` CHANGE `channel_w_chat` `channel_w_chat` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - $r11 = q("ALTER TABLE `channel` CHANGE `channel_a_delegate` `channel_a_delegate` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'"); - if($r && $r2 && $r3 && $r3 && $r5 && $r6 && $r7 && $r8 && $r9 && $r9 && $r10 && $r11) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1099() { - $r = q("CREATE TABLE IF NOT EXISTS `xchat` ( - `xchat_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `xchat_url` char(255) NOT NULL DEFAULT '', - `xchat_desc` char(255) NOT NULL DEFAULT '', - `xchat_xchan` char(255) NOT NULL DEFAULT '', - PRIMARY KEY (`xchat_id`), - KEY `xchat_url` (`xchat_url`), - KEY `xchat_desc` (`xchat_desc`), - KEY `xchat_xchan` (`xchat_xchan`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1100() { - $r = q("ALTER TABLE `xchat` ADD `xchat_edited` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', -ADD INDEX ( `xchat_edited` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1101() { - $r = q("update updates set ud_flags = 2 where ud_flags = (-1)"); - $r = q("update updates set ud_flags = 0 where ud_flags = 4096"); - return UPDATE_SUCCESS; -} - -function update_r1102() { - $r = q("update abook set abook_flags = (abook_flags - %d) - where ( abook_flags & %d)", - intval(ABOOK_FLAG_UNCONNECTED), - intval(ABOOK_FLAG_UNCONNECTED) - ); - return UPDATE_SUCCESS; -} - -function update_r1103() { - $x = curl_version(); - if(stristr($x['ssl_version'],'openssl')) - set_config('system','curl_ssl_ciphers','ALL:!eNULL'); - return UPDATE_SUCCESS; -} - -function update_r1104() { - $r = q("ALTER TABLE `item` ADD `route` TEXT NOT NULL DEFAULT '' AFTER `postopts` "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1105() { - $r = q("ALTER TABLE `site` ADD `site_pull` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `site_update` , -CHANGE `site_sync` `site_sync` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( `site_pull` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1106() { - $r = q("ALTER TABLE `notify` CHANGE `parent` `parent` CHAR( 255 ) NOT NULL DEFAULT ''"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1107() { - $r = q("CREATE TABLE IF NOT EXISTS `app` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `app_id` char(64) NOT NULL DEFAULT '', - `app_sig` char(255) NOT NULL DEFAULT '', - `app_author` char(255) NOT NULL DEFAULT '', - `app_name` char(255) NOT NULL DEFAULT '', - `app_desc` text NOT NULL, - `app_url` char(255) NOT NULL DEFAULT '', - `app_photo` char(255) NOT NULL DEFAULT '', - `app_version` char(255) NOT NULL DEFAULT '', - `app_channel` int(11) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - KEY `app_id` (`app_id`), - KEY `app_name` (`app_name`), - KEY `app_url` (`app_url`), - KEY `app_photo` (`app_photo`), - KEY `app_version` (`app_version`), - KEY `app_channel` (`app_channel`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1108() { - $r = q("ALTER TABLE `app` ADD `app_addr` CHAR( 255 ) NOT NULL DEFAULT '', -ADD `app_price` CHAR( 255 ) NOT NULL DEFAULT '', -ADD `app_page` CHAR( 255 ) NOT NULL DEFAULT '', -ADD INDEX ( `app_price` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1109() { - $r = q("ALTER TABLE `app` CHANGE `app_id` `app_id` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -// We ended up with an extra zero in the name for 1108, so do it over and ignore the result. - -function update_r1110() { - $r = q("ALTER TABLE `app` ADD `app_addr` CHAR( 255 ) NOT NULL DEFAULT '', -ADD `app_price` CHAR( 255 ) NOT NULL DEFAULT '', -ADD `app_page` CHAR( 255 ) NOT NULL DEFAULT '', -ADD INDEX ( `app_price` )"); - - return UPDATE_SUCCESS; - -} - -function update_r1111() { - $r = q("ALTER TABLE `app` ADD `app_requires` CHAR( 255 ) NOT NULL DEFAULT '' "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1112() { - $r = q("CREATE TABLE IF NOT EXISTS `likes` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `liker` char(128) NOT NULL DEFAULT '', - `likee` char(128) NOT NULL DEFAULT '', - `iid` int(11) NOT NULL DEFAULT '0', - `verb` char(255) NOT NULL DEFAULT '', - `target_type` char(255) NOT NULL DEFAULT '', - `target` mediumtext NOT NULL, - PRIMARY KEY (`id`), - KEY `liker` (`liker`), - KEY `likee` (`likee`), - KEY `iid` (`iid`), - KEY `verb` (`verb`), - KEY `target_type` (`target_type`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8"); - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1113() { - $r = q("ALTER TABLE `likes` ADD `channel_id` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `id` , -CHANGE `iid` `iid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0', -ADD INDEX ( `channel_id` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1114() { - $r = q("ALTER TABLE `likes` ADD `target_id` CHAR( 128 ) NOT NULL DEFAULT '' AFTER `target_type` , -ADD INDEX ( `target_id` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1115() { - - // Introducing email verification. Mark all existing accounts as verified or they - // won't be able to login. - - $r = q("update account set account_flags = (account_flags ^ 1) where (account_flags & 1) "); - return UPDATE_SUCCESS; -} - -function update_r1116() { - @os_mkdir('store/[data]/smarty3',STORAGE_DEFAULT_PERMISSIONS,true); - return UPDATE_SUCCESS; -} - -function update_r1117() { - $r = q("ALTER TABLE `channel` CHANGE `channel_a_bookmark` `channel_w_like` INT( 10 ) UNSIGNED NOT NULL DEFAULT '128', -DROP INDEX `channel_a_bookmark` , ADD INDEX `channel_w_like` ( `channel_w_like` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1118() { - $r = q("ALTER TABLE `account` ADD `account_password_changed` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', -ADD INDEX ( `account_password_changed` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1119() { - $r1 = q("CREATE TABLE IF NOT EXISTS `profdef` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `field_name` char(255) NOT NULL DEFAULT '', - `field_type` char(16) NOT NULL DEFAULT '', - `field_desc` char(255) NOT NULL DEFAULT '', - `field_help` char(255) NOT NULL DEFAULT '', - PRIMARY KEY (`id`), - KEY `field_name` (`field_name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8"); - - $r2 = q("CREATE TABLE IF NOT EXISTS `profext` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `channel_id` int(10) unsigned NOT NULL DEFAULT '0', - `hash` char(255) NOT NULL DEFAULT '', - `k` char(255) NOT NULL DEFAULT '', - `v` mediumtext NOT NULL, - PRIMARY KEY (`id`), - KEY `channel_id` (`channel_id`), - KEY `hash` (`hash`), - KEY `k` (`k`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8"); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1120() { - $r = q("ALTER TABLE `item` ADD `public_policy` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `coord` , -ADD INDEX ( `public_policy` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1121() { - $r = q("ALTER TABLE `site` ADD `site_realm` CHAR( 255 ) NOT NULL DEFAULT '', -ADD INDEX ( `site_realm` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1122() { - $r = q("update site set site_realm = '%s' where true", - dbesc(DIRECTORY_REALM) - ); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1123() { - $r1 = q("ALTER TABLE `hubloc` ADD `hubloc_network` CHAR( 32 ) NOT NULL DEFAULT '' AFTER `hubloc_addr` , -ADD INDEX ( `hubloc_network` )"); - $r2 = q("update hubloc set hubloc_network = 'zot' where true"); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1124() { - $r1 = q("CREATE TABLE IF NOT EXISTS `sign` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `iid` int(10) unsigned NOT NULL DEFAULT '0', - `retract_iid` int(10) unsigned NOT NULL DEFAULT '0', - `signed_text` mediumtext NOT NULL, - `signature` text NOT NULL, - `signer` char(255) NOT NULL, - PRIMARY KEY (`id`), - KEY `iid` (`iid`), - KEY `retract_iid` (`retract_iid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - $r2 = q("CREATE TABLE IF NOT EXISTS `conv` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `guid` char(255) NOT NULL, - `recips` mediumtext NOT NULL, - `uid` int(11) NOT NULL, - `creator` char(255) NOT NULL, - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `subject` mediumtext NOT NULL, - PRIMARY KEY (`id`), - KEY `created` (`created`), - KEY `updated` (`updated`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - - -} - -function update_r1125() { - $r = q("ALTER TABLE `profdef` ADD `field_inputs` MEDIUMTEXT NOT NULL DEFAULT ''"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - - -function update_r1126() { - $r = q("ALTER TABLE `mail` ADD `convid` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `id` , -ADD INDEX ( `convid` )"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1127() { - $r = q("ALTER TABLE `item` ADD `comments_closed` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `changed` , -ADD INDEX ( `comments_closed` ), ADD INDEX ( `changed` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1128() { - $r = q("ALTER TABLE `item` ADD `diaspora_meta` MEDIUMTEXT NOT NULL DEFAULT '' AFTER `sig` "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1129() { - $r = q("update hubloc set hubloc_network = 'zot' where hubloc_network = ''"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1130() { - $myperms = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK - |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT - |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE; - - $r = q("select abook_channel, abook_my_perms from abook where (abook_flags & %d) and abook_my_perms != 0", - intval(ABOOK_FLAG_SELF) - ); - if($r) { - foreach($r as $rr) { - set_pconfig($rr['abook_channel'],'system','autoperms',$rr['abook_my_perms']); - } - } - $r = q("update abook set abook_my_perms = %d where (abook_flags & %d) and abook_my_perms = 0", - intval($myperms), - intval(ABOOK_FLAG_SELF) - ); - - return UPDATE_SUCCESS; -} - -function update_r1131() { - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) // make sure this gets skipped for anyone who hasn't run it yet, it will fail on pg - return UPDATE_SUCCESS; - - $r1 = q("ALTER TABLE `abook` ADD `abook_rating_text` TEXT NOT NULL DEFAULT '' AFTER `abook_rating` "); - $r2 = q("ALTER TABLE `xlink` ADD `xlink_rating_text` TEXT NOT NULL DEFAULT '' AFTER `xlink_rating` "); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1132() { - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { // correct previous failed update - $r1 = q("ALTER TABLE abook ADD abook_rating_text TEXT NOT NULL DEFAULT '' "); - $r2 = q("ALTER TABLE xlink ADD xlink_rating_text TEXT NOT NULL DEFAULT '' "); - if(!$r1 || !$r2) - return UPDATE_FAILED; - } - return UPDATE_SUCCESS; -} - -function update_r1133() { - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("CREATE TABLE xperm ( - xp_id serial NOT NULL, - xp_client varchar( 20 ) NOT NULL DEFAULT '', - xp_channel bigint NOT NULL DEFAULT '0', - xp_perm varchar( 64 ) NOT NULL DEFAULT '', - PRIMARY KEY (xp_id) )"); - $r2 = 0; - foreach(array('xp_client', 'xp_channel', 'xp_perm') as $fld) - $r2 += ((q("create index $fld on xperm ($fld)") == false) ? 0 : 1); - - $r = (($r1 && $r2) ? true : false); - } - else { - $r = q("CREATE TABLE IF NOT EXISTS `xperm` ( - `xp_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , - `xp_client` VARCHAR( 20 ) NOT NULL DEFAULT '', - `xp_channel` INT UNSIGNED NOT NULL DEFAULT '0', - `xp_perm` VARCHAR( 64 ) NOT NULL DEFAULT '', - KEY `xp_client` (`xp_client`), - KEY `xp_channel` (`xp_channel`), - KEY `xp_perm` (`xp_perm`) - ) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - } - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1134() { - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("ALTER TABLE xlink ADD xlink_static numeric(1) NOT NULL DEFAULT '0' "); - $r2 = q("create index xlink_static on xlink ( xlink_static ) "); - $r = $r1 && $r2; - } - else - $r = q("ALTER TABLE xlink ADD xlink_static TINYINT( 1 ) NOT NULL DEFAULT '0', ADD INDEX ( xlink_static ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1135() { - $r = q("ALTER TABLE xlink ADD xlink_sig TEXT NOT NULL DEFAULT ''"); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1136() { - $r1 = q("alter table item add item_unseen smallint not null default '0' "); - $r2 = q("create index item_unseen on item ( item_unseen ) "); - $r3 = q("update item set item_unseen = 1 where ( item_flags & 2 ) > 0 "); - - if($r1 && $r2 && $r3) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1137() { - $r1 = q("alter table site add site_valid smallint not null default '0' "); - $r2 = q("create index site_valid on site ( site_valid ) "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1138() { - $r1 = q("alter table outq add outq_priority smallint not null default '0' "); - $r2 = q("create index outq_priority on outq ( outq_priority ) "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1139() { - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("ALTER TABLE channel ADD channel_lastpost timestamp NOT NULL DEFAULT '0001-01-01 00:00:00'"); - $r2 = q("create index channel_lastpost on channel ( channel_lastpost ) "); - $r = $r1 && $r2; - } - else - $r = q("ALTER TABLE `channel` ADD `channel_lastpost` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' AFTER `channel_dirdate` , ADD INDEX ( `channel_lastpost` ) "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1140() { - $r = q("select * from clients where true"); - $x = false; - if($r) { - foreach($r as $rr) { - $m = q("INSERT INTO xperm (xp_client, xp_channel, xp_perm) VALUES ('%s', %d, '%s') ", - dbesc($rr['client_id']), - intval($rr['uid']), - dbesc('all') - ); - if(! $m) - $x = true; - } - } - if($x) - return UPDATE_FAILED; - return UPDATE_SUCCESS; -} - - -function update_r1141() { - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("ALTER TABLE menu ADD menu_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', ADD menu_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00'"); - $r2 = q("create index menu_created on menu ( menu_created ) "); - $r3 = q("create index menu_edited on menu ( menu_edited ) "); - $r = $r1 && $r2; - } - else - $r = q("ALTER TABLE menu ADD menu_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD menu_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', ADD INDEX ( menu_created ), ADD INDEX ( menu_edited ) "); - - $t = datetime_convert(); - q("update menu set menu_created = '%s', menu_edited = '%s' where true", - dbesc($t), - dbesc($t) - ); - - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1142() { - - $r1 = q("alter table site add site_dead smallint not null default '0' "); - $r2 = q("create index site_dead on site ( site_dead ) "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - - -} - -function update_r1143() { - - $r1 = q("ALTER TABLE abook ADD abook_incl TEXT NOT NULL DEFAULT ''"); - $r2 = q("ALTER TABLE abook ADD abook_excl TEXT NOT NULL DEFAULT '' "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1144() { - $r = q("select flags, id from attach where flags != 0"); - if($r) { - foreach($r as $rr) { - if($rr['flags'] & 1) { - q("update attach set is_dir = 1 where id = %d", - intval($rr['id']) - ); - } - if($rr['flags'] & 2) { - q("update attach set os_storage = 1 where id = %d", - intval($rr['id']) - ); - } - } - } - - return UPDATE_SUCCESS; -} - -function update_r1145() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("ALTER TABLE event ADD event_status char(255) NOT NULL DEFAULT '', - ADD event_status_date timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', - ADD event_percent SMALLINT NOT NULL DEFAULT '0', - ADD event_repeat TEXT NOT NULL DEFAULT '' "); - $r2 = q("create index event_status on event ( event_status )"); - $r = $r1 && $r2; - } - else { - $r = q("ALTER TABLE `event` ADD `event_status` CHAR( 255 ) NOT NULL DEFAULT '', - ADD `event_status_date` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', - ADD `event_percent` SMALLINT NOT NULL DEFAULT '0', - ADD `event_repeat` TEXT NOT NULL DEFAULT '', - ADD INDEX ( `event_status` ) "); - } - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1146() { - - $r1 = q("alter table event add event_sequence smallint not null default '0' "); - $r2 = q("create index event_sequence on event ( event_sequence ) "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1147() { - - $r1 = q("alter table event add event_priority smallint not null default '0' "); - $r2 = q("create index event_priority on event ( event_priority ) "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1148() { - $r1 = q("alter table likes add i_mid char(255) not null default '' "); - $r2 = q("create index i_mid on likes ( i_mid ) "); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1149() { - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("ALTER TABLE obj ADD obj_term CHAR( 255 ) NOT NULL DEFAULT '', - ADD obj_url CHAR( 255 ) NOT NULL DEFAULT '', - ADD obj_imgurl CHAR( 255 ) NOT NULL DEFAULT '', - ADD obj_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', - ADD obj_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' "); - } - else { - $r1 = q("ALTER TABLE obj ADD obj_term CHAR( 255 ) NOT NULL DEFAULT '', - ADD obj_url CHAR( 255 ) NOT NULL DEFAULT '', - ADD obj_imgurl CHAR( 255 ) NOT NULL DEFAULT '', - ADD obj_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', - ADD obj_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' "); - } - - $r2 = q("create index obj_term on obj ( obj_term ) "); - $r3 = q("create index obj_url on obj ( obj_url ) "); - $r4 = q("create index obj_imgurl on obj ( obj_imgurl ) "); - $r5 = q("create index obj_created on obj ( obj_created ) "); - $r6 = q("create index obj_edited on obj ( obj_edited ) "); - $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6; - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1150() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("ALTER TABLE app ADD app_created timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', - ADD app_edited timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' "); - } - else { - $r1 = q("ALTER TABLE app ADD app_created DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', - ADD app_edited DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' "); - } - - $r2 = q("create index app_created on app ( app_created ) "); - $r3 = q("create index app_edited on app ( app_edited ) "); - - $r = $r1 && $r2 && $r3; - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1151() { - - $r3 = q("select likes.*, item.mid from likes left join item on likes.iid = item.id"); - if($r3) { - foreach($r3 as $rr) { - q("update likes set i_mid = '%s' where id = $d", - dbesc($rr['mid']), - intval($rr['id']) - ); - } - } - - - return UPDATE_SUCCESS; - -} - -function update_r1152() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - - $r1 = q("CREATE TABLE IF NOT EXISTS \"dreport\" ( - \"dreport_id\" serial NOT NULL, - \"dreport_channel\" int(11) NOT NULL DEFAULT '0', - \"dreport_mid\" char(255) NOT NULL DEFAULT '', - \"dreport_site\" char(255) NOT NULL DEFAULT '', - \"dreport_recip\" char(255) NOT NULL DEFAULT '', - \"dreport_result\" char(255) NOT NULL DEFAULT '', - \"dreport_time\" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', - \"dreport_xchan\" char(255) NOT NULL DEFAULT '', - PRIMARY KEY (\"dreport_id\") "); - - $r2 = q("create index \"dreport_mid\" on dreport (\"dreport_mid\") "); - $r3 = q("create index \"dreport_site\" on dreport (\"dreport_site\") "); - $r4 = q("create index \"dreport_time\" on dreport (\"dreport_time\") "); - $r5 = q("create index \"dreport_xchan\" on dreport (\"dreport_xchan\") "); - $r6 = q("create index \"dreport_channel\" on dreport (\"dreport_channel\") "); - - $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6; - - } - else { - $r = q("CREATE TABLE IF NOT EXISTS `dreport` ( - `dreport_id` int(11) NOT NULL AUTO_INCREMENT, - `dreport_channel` int(11) NOT NULL DEFAULT '0', - `dreport_mid` char(255) NOT NULL DEFAULT '', - `dreport_site` char(255) NOT NULL DEFAULT '', - `dreport_recip` char(255) NOT NULL DEFAULT '', - `dreport_result` char(255) NOT NULL DEFAULT '', - `dreport_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `dreport_xchan` char(255) NOT NULL DEFAULT '', - PRIMARY KEY (`dreport_id`), - KEY `dreport_mid` (`dreport_mid`), - KEY `dreport_site` (`dreport_site`), - KEY `dreport_time` (`dreport_time`), - KEY `dreport_xchan` (`dreport_xchan`), - KEY `dreport_channel` (`dreport_channel`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - } - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1153() { - - $r1 = q("ALTER TABLE dreport ADD dreport_queue CHAR( 255 ) NOT NULL DEFAULT '' "); - $r2 = q("create index dreport_queue on dreport ( dreport_queue) "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - - -} - -function update_r1154() { - - $r = q("ALTER TABLE event ADD event_vdata text NOT NULL "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - - -function update_r1155() { - - $r1 = q("alter table site add site_type smallint not null default '0' "); - $r2 = q("create index site_type on site ( site_type ) "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1156() { - $r1 = q("ALTER TABLE mail ADD conv_guid CHAR( 255 ) NOT NULL DEFAULT '' "); - $r2 = q("create index conv_guid on mail ( conv_guid ) "); - - $r3 = q("select mail.id, mail.convid, conv.guid from mail left join conv on mail.convid = conv.id where true"); - if($r3) { - foreach($r3 as $rr) { - if($rr['convid']) { - q("update mail set conv_guid = '%s' where id = %d", - dbesc($rr['guid']), - intval($rr['id']) - ); - } - } - } - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1157() { - $r1 = q("alter table site add site_project char(255) not null default '' "); - $r2 = q("create index site_project on site ( site_project ) "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - - -function update_r1158() { - $r = q("select attach.id, attach.data, channel_address from attach left join channel on attach.uid = channel_id where os_storage = 1 and not attach.data like '%%store%%' "); - if($r) { - foreach($r as $rr) { - $has_slash = ((substr($rr['data'],0,1) === '/') ? true : false); - q("update attach set data = '%s' where id = %d", - dbesc('store/' . $rr['channel_address']. (($has_slash) ? '' : '/' . $rr['data'])), - dbesc($rr['id']) - ); - } - } - return UPDATE_SUCCESS; -} - - -function update_r1159() { - $r = q("select attach.id, attach.data, attach.hash, channel_address from attach left join channel on attach.uid = channel_id where os_storage = 1 "); - if($r) { - foreach($r as $rr) { - $x = dbunescbin($rr['data']); - $has_slash = (($x === 'store/' . $rr['channel_address'] . '/') ? true : false); - if(($x === 'store/' . $rr['channel_address']) || ($has_slash)) { - q("update attach set data = '%s' where id = %d", - dbesc('store/' . $rr['channel_address']. (($has_slash) ? '' : '/' . $rr['hash'])), - dbesc($rr['id']) - ); - } - } - } - return UPDATE_SUCCESS; -} - - -function update_r1160() { - $r = q("alter table abook add abook_instance text not null default '' "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1161() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("CREATE TABLE \"iconfig\" ( - \"id\" serial NOT NULL, - \"iid\" bigint NOT NULL DEFAULT '0', - \"cat\" text NOT NULL DEFAULT '', - \"k\" text NOT NULL DEFAULT '', - \"v\" text NOT NULL DEFAULT '', - PRIMARY_KEY(\"id\") -) "); -$r2 = q("create index \"iconfig_iid\" on iconfig (\"iid\") ");; -$r3 = q("create index \"iconfig_cat\" on iconfig (\"cat\") "); -$r4 = q("create index \"iconfig_k\" on iconfig (\"k\") "); - $r = $r1 && $r2 && $r3 && $r4; - } - else { - $r = q("CREATE TABLE IF NOT EXISTS `iconfig` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `iid` int(11) NOT NULL DEFAULT '0', - `cat` char(255) NOT NULL DEFAULT '', - `k` char(255) NOT NULL DEFAULT '', - `v` mediumtext NOT NULL, - PRIMARY KEY (`id`), - KEY `iid` (`iid`), - KEY `cat` (`cat`), - KEY `k` (`k`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - } - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1162() { - $r1 = q("alter table iconfig add sharing int not null default '0' "); - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) - $r2 = q("create index \"iconfig_sharing\" on iconfig (\"sharing\") "); - else - $r2 = q("alter table iconfig add index ( sharing ) "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1163() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("alter table channel add channel_moved text not null default '' "); - $r2 = q("create index \"channel_channel_moved\" on channel (\"channel_moved\") "); - } - else { - $r1 = q("alter table channel add channel_moved char(255) not null default '' "); - $r2 = q("alter table channel add index ( channel_moved ) "); - } - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1164() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("CREATE TABLE \"abconfig\" ( - \"id\" serial NOT NULL, - \"chan\" text NOT NULL, - \"xchan\" text NOT NULL, - \"cat\" text NOT NULL, - \"k\" text NOT NULL, - \"v\" text NOT NULL, - PRIMARY KEY (\"id\") "); - $r2 = q("create index \"abconfig_chan\" on abconfig (\"chan\") "); - $r3 = q("create index \"abconfig_xchan\" on abconfig (\"xchan\") "); - $r4 = q("create index \"abconfig_cat\" on abconfig (\"cat\") "); - $r5 = q("create index \"abconfig_k\" on abconfig (\"k\") "); - $r = $r1 && $r2 && $r3 && $r4 && $r5; - } - else { - $r = q("CREATE TABLE IF NOT EXISTS `abconfig` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `chan` char(255) NOT NULL DEFAULT '', - `xchan` char(255) NOT NULL DEFAULT '', - `cat` char(255) NOT NULL DEFAULT '', - `k` char(255) NOT NULL DEFAULT '', - `v` mediumtext NOT NULL, - PRIMARY KEY (`id`), - KEY `chan` (`chan`), - KEY `xchan` (`xchan`), - KEY `cat` (`cat`), - KEY `k` (`k`) - ) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - } - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1165() { - - $r1 = q("alter table hook add hook_version int not null default '0' "); - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) - $r2 = q("create index \"hook_version_idx\" on hook (\"hook_version\") "); - else - $r2 = q("alter table hook add index ( hook_version ) "); - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1166() { - - $r = q("alter table source add src_tag text not null default '' "); - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1167() { - - $r1 = q("alter table app add app_deleted int not null default '0' "); - $r2 = q("alter table app add app_system int not null default '0' "); - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r3 = q("create index \"app_deleted_idx\" on app (\"app_deleted\") "); - $r4 = q("create index \"app_system_idx\" on app (\"app_system\") "); - } - else { - $r3 = q("alter table app add index ( app_deleted ) "); - $r4 = q("alter table app add index ( app_system ) "); - } - - if($r1 && $r2 && $r3 && $r4) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1168() { - - $r1 = q("alter table obj add obj_quantity int not null default '0' "); - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r2 = q("create index \"obj_quantity_idx\" on obj (\"obj_quantity\") "); - } - else { - $r2 = q("alter table obj add index ( obj_quantity ) "); - } - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1169() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("ALTER TABLE `addon` CHANGE `timestamp` `tstamp` numeric( 20 ) UNSIGNED NOT NULL DEFAULT '0' "); - $r2 = q("ALTER TABLE `addon` CHANGE `name` `aname` text NOT NULL DEFAULT '' "); - $r3 = q("ALTER TABLE `hook` CHANGE `function` `fn` text NOT NULL DEFAULT '' "); - - } - else { - $r1 = q("ALTER TABLE `addon` CHANGE `timestamp` `tstamp` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT '0' "); - $r2 = q("ALTER TABLE `addon` CHANGE `name` `aname` CHAR(255) NOT NULL DEFAULT '' "); - $r3 = q("ALTER TABLE `hook` CHANGE `function` `fn` CHAR(255) NOT NULL DEFAULT '' "); - } - - if($r1 && $r2 && $r3) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1170() { - - $r1 = q("drop table fcontact"); - $r2 = q("drop table ffinder"); - $r3 = q("drop table fserver"); - $r4 = q("drop table fsuggest"); - $r5 = q("drop table spam"); - - if($r1 && $r2 && $r3 && $r4 && $r5) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1171() { - - $r1 = q("ALTER TABLE verify CHANGE `type` `vtype` varchar(32) NOT NULL DEFAULT '' "); - $r2 = q("ALTER TABLE tokens CHANGE `scope` `auth_scope` varchar(512) NOT NULL DEFAULT '' "); - $r3 = q("ALTER TABLE auth_codes CHANGE `scope` `auth_scope` varchar(512) NOT NULL DEFAULT '' "); - $r4 = q("ALTER TABLE clients CHANGE `name` `clname` TEXT "); - $r5 = q("ALTER TABLE session CHANGE `data` `sess_data` TEXT NOT NULL "); - $r6 = q("ALTER TABLE register CHANGE `language` `lang` varchar(16) NOT NULL DEFAULT '' "); - - if($r1 && $r2 && $r3 && $r4 && $r5 && $r6) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - - - -} - -function update_r1172() { - - $r1 = q("ALTER TABLE term CHANGE `type` `ttype` int(3) NOT NULL DEFAULT '0' "); - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r2 = q("ALTER TABLE groups CHANGE `name` `gname` TEXT NOT NULL "); - $r3 = q("ALTER TABLE profile CHANGE `name` `fullname` TEXT NOT NULL "); - $r4 = q("ALTER TABLE profile CHANGE `with` `partner` TEXT NOT NULL "); - $r5 = q("ALTER TABLE profile CHANGE `work` `employment` TEXT NOT NULL "); - } - else { - $r2 = q("ALTER TABLE groups CHANGE `name` `gname` char(255) NOT NULL DEFAULT '' "); - $r3 = q("ALTER TABLE profile CHANGE `name` `fullname` char(255) NOT NULL DEFAULT '' "); - $r4 = q("ALTER TABLE profile CHANGE `with` `partner` char(255) NOT NULL DEFAULT '' "); - $r5 = q("ALTER TABLE profile CHANGE `work` `employment` TEXT NOT NULL "); - } - if($r1 && $r2 && $r3 && $r4 && $r5) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1173() { - - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("ALTER TABLE notify CHANGE `name` `xname` TEXT NOT NULL "); - $r2 = q("ALTER TABLE notify CHANGE `date` `created` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' "); - $r3 = q("ALTER TABLE notify CHANGE `type` `ntype` numeric(3) NOT NULL DEFAULT '0' "); - } - else { - $r1 = q("ALTER TABLE notify CHANGE `name` `xname` char(255) NOT NULL DEFAULT '' "); - $r2 = q("ALTER TABLE notify CHANGE `date` `created` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' "); - $r3 = q("ALTER TABLE notify CHANGE `type` `ntype` smallint(3) NOT NULL DEFAULT '0' "); - } - - if($r1 && $r2 && $r3) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1174() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("ALTER TABLE event CHANGE `type` `etype` varchar(255) NOT NULL DEFAULT '' "); - $r2 = q("ALTER TABLE event CHANGE `start` `dtstart` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' "); - $r3 = q("ALTER TABLE event CHANGE `finish` `dtend` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' "); - $r4 = q("ALTER TABLE event CHANGE `ignore` `dismissed` numeric(1) NOT NULL DEFAULT '0' "); - $r5 = q("ALTER TABLE attach CHANGE `data` `content` bytea NOT NULL "); - $r6 = q("ALTER TABLE photo CHANGE `data` `content` bytea NOT NULL "); - } - else { - $r1 = q("ALTER TABLE event CHANGE `type` `etype` char(255) NOT NULL DEFAULT '' "); - $r2 = q("ALTER TABLE event CHANGE `start` `dtstart` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' "); - $r3 = q("ALTER TABLE event CHANGE `finish` `dtend` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00' "); - $r4 = q("ALTER TABLE event CHANGE `ignore` `dismissed` tinyint(1) NOT NULL DEFAULT '0' "); - $r5 = q("ALTER TABLE attach CHANGE `data` `content` longblob NOT NULL "); - $r6 = q("ALTER TABLE photo CHANGE `data` `content` mediumblob NOT NULL "); - } - - if($r1 && $r2 && $r3 && $r4 && $r5 && $r6) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1175() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("ALTER TABLE item CHANGE `object` `obj` text NOT NULL"); - $r2 = q("ALTER TABLE photo CHANGE `size` `filesize` bigint NOT NULL DEFAULT '0' "); - $r3 = q("ALTER TABLE photo CHANGE `scale` `imgscale` numeric(3) NOT NULL DEFAULT '0' "); - $r4 = q("ALTER TABLE photo CHANGE `type` `mimetype` varchar(128) NOT NULL DEFAULT 'image/jpeg' "); - - } - else { - $r1 = q("ALTER TABLE item CHANGE `object` `obj` text NOT NULL"); - $r2 = q("ALTER TABLE photo CHANGE `size` `filesize` int(10) unsigned NOT NULL DEFAULT '0' "); - $r3 = q("ALTER TABLE photo CHANGE `scale` `imgscale` tinyint(3) unsigned NOT NULL DEFAULT '0' "); - $r4 = q("ALTER TABLE photo CHANGE `type` `mimetype` char(128) NOT NULL DEFAULT 'image/jpeg' "); - - } - - if($r1 && $r2 && $r3 && $r4) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - - -function update_r1176() { - - $r = q("select * from item_id where true"); - if($r) { - foreach($r as $rr) { - \Zotlabs\Lib\IConfig::Set($rr['iid'],'system',$rr['service'],$rr['sid'],true); - } - } - return UPDATE_SUCCESS; - -} - -function update_r1177() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("alter table event add cal_id bigint NOT NULL DEFAULT '0'"); - $r2 = q("create index \"event_cal_idx\" on event (\"cal_id\") "); - - $r3 = q("CREATE TABLE \"cal\" ( - \"cal_id\" serial NOT NULL, - \"cal_aid\" bigint NOT NULL DEFAULT '0', - \"cal_uid\" bigint NOT NULL DEFAULT '0', - \"cal_hash\" text NOT NULL, - \"cal_name\" text NOT NULL, - \"uri\" text NOT NULL, - \"logname\" text NOT NULL, - \"pass\" text NOT NULL, - \"ctag\" text NOT NULL, - \"synctoken\" text NOT NULL, - \"cal_types\" text NOT NULL, - PRIMARY KEY (\"cal_id\") "); - $r4 = q("create index \"cal_hash_idx\" on cal (\"cal_hash\") "); - $r5 = q("create index \"cal_name_idx\" on cal (\"cal_name\") "); - $r6 = q("create index \"cal_types_idx\" on cal (\"cal_types\") "); - $r7 = q("create index \"cal_aid_idx\" on cal (\"cal_aid\") "); - $r8 = q("create index \"cal_uid_idx\" on cal (\"cal_uid\") "); - $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8; - } - else { - $r1 = q("alter table event add cal_id int(10) unsigned NOT NULL DEFAULT '0', - add index ( cal_id ) "); - - $r2 = q("CREATE TABLE IF NOT EXISTS `cal` ( - `cal_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `cal_aid` int(10) unsigned NOT NULL DEFAULT '0', - `cal_uid` int(10) unsigned NOT NULL DEFAULT '0', - `cal_hash` varchar(255) NOT NULL DEFAULT '', - `cal_name` varchar(255) NOT NULL DEFAULT '', - `uri` varchar(255) NOT NULL DEFAULT '', - `logname` varchar(255) NOT NULL DEFAULT '', - `pass` varchar(255) NOT NULL DEFAULT '', - `ctag` varchar(255) NOT NULL DEFAULT '', - `synctoken` varchar(255) NOT NULL DEFAULT '', - `cal_types` varchar(255) NOT NULL DEFAULT '', - PRIMARY KEY (`cal_id`), - KEY `cal_aid` (`cal_aid`), - KEY `cal_uid` (`cal_uid`), - KEY `cal_hash` (`cal_hash`), - KEY `cal_name` (`cal_name`), - KEY `cal_types` (`cal_types`) - ) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - - $r = $r1 && $r2; - } - - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1178() { - - $c2 = null; - - $c1 = q("SELECT channel_id, channel_hash from channel where true"); - if($c1) { - $c2 = q("SELECT id, chan from abconfig where true"); - if($c2) { - for($x = 0; $x < count($c2); $x ++) { - foreach($c1 as $c) { - if($c['channel_hash'] == $c2[$x]['chan']) { - $c2[$x]['chan'] = $c['channel_id']; - break; - } - } - } - } - } - - $r1 = q("ALTER TABLE abconfig CHANGE chan chan int(10) unsigned NOT NULL DEFAULT '0' "); - - if($c2) { - foreach($c2 as $c) { - q("UPDATE abconfig SET chan = %d where id = %d", - intval($c['chan']), - intval($c['id']) - ); - } - } - - if($r1) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1179() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("CREATE TABLE atoken ( - atoken_id serial NOT NULL, - atoken_aid bigint NOT NULL DEFAULT 0, - atoken_uid bigint NOT NULL DEFAULT 0, - atoken_name varchar(255) NOT NULL DEFAULT '', - atoken_token varchar(255) NOT NULL DEFAULT '', - atoken_expires timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY (atoken_id)) "); - $r2 = q("create index atoken_aid on atoken (atoken_aid)"); - $r3 = q("create index atoken_uid on atoken (atoken_uid)"); - $r4 = q("create index atoken_name on atoken (atoken_name)"); - $r5 = q("create index atoken_token on atoken (atoken_token)"); - $r6 = q("create index atoken_expires on atoken (atoken_expires)"); - - $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6; - - } - else { - $r = q("CREATE TABLE IF NOT EXISTS `atoken` ( - `atoken_id` int(11) NOT NULL AUTO_INCREMENT, - `atoken_aid` int(11) NOT NULL DEFAULT 0, - `atoken_uid` int(11) NOT NULL DEFAULT 0, - `atoken_name` char(255) NOT NULL DEFAULT '', - `atoken_token` char(255) NOT NULL DEFAULT '', - `atoken_expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY (`atoken_id`), - KEY `atoken_aid` (`atoken_aid`), - KEY `atoken_uid` (`atoken_uid`), - KEY `atoken_name` (`atoken_name`), - KEY `atoken_token` (`atoken_token`), - KEY `atoken_expires` (`atoken_expires`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); - } - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1180() { - - require_once('include/perm_upgrade.php'); - - $r1 = q("select * from channel where true"); - if($r1) { - foreach($r1 as $rr) { - perm_limits_upgrade($rr); - autoperms_upgrade($rr); - } - } - - $r2 = q("select * from abook where true"); - if($r2) { - foreach($r2 as $rr) { - perm_abook_upgrade($rr); - } - } - - $r = $r1 && $r2; - if($r) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1181() { - if(\Zotlabs\Lib\System::get_server_role() == 'pro') { - q("update account set account_level = 5 where true"); - } - return UPDATE_SUCCESS; -} - -function update_r1182() { - - $r1 = q("alter table site add site_version varchar(32) not null default '' "); - - if($r1) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1183() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("alter table hook ALTER COLUMN priority TYPE smallint"); - $r2 = q("alter table hook ALTER COLUMN priority SET NOT NULL"); - $r3 = q("alter table hook ALTER COLUMN priority SET DEFAULT '0'"); - $r1 = $r1 && $r2 && $r3; - } - else { - $r1 = q("alter table hook CHANGE priority priority smallint NOT NULL DEFAULT '0' "); - } - $r2 = q("create index priority_idx on hook (priority)"); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1184() { - - $r1 = q("alter table site add site_crypto text not null default '' "); - - if($r1) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1185() { - - $r1 = q("alter table app add app_plugin text not null default '' "); - - if($r1) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1186() { - - $r1 = q("alter table profile add profile_vcard text not null"); - - if($r1) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - - -} - -function update_r1187() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("alter table outq add outq_scheduled timestamp not null default '0001-01-01 00:00:00' "); - } - else { - $r1 = q("alter table outq add outq_scheduled datetime not null default '0001-01-01 00:00:00' "); - } - $r2 = q("create index outq_scheduled_idx on outq (outq_scheduled)"); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - - -} - -function update_r1188() { - - $r1 = q("alter table channel add channel_password varchar(255) not null default '' "); - $r2 = q("alter table channel add channel_salt varchar(255) not null default '' "); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1189() { - - $r1 = q("alter table mail add mail_mimetype varchar(64) not null default 'text/bbcode' "); - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r2 = q("alter table mail add mail_raw smallint not null default 0 "); - } - else { - $r2 = q("alter table mail add mail_raw tinyint(4) not null default 0 "); - } - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - -} - -function update_r1190() { - $r1 = q("alter table abook add abook_not_here smallint not null default 0 "); - - $r2 = q("create index abook_not_here on abook (abook_not_here)"); - - if($r1 && $r2) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1191() { - - $r = q("SELECT 1 FROM principals LIMIT 1"); - - if($r !== false) { - return UPDATE_SUCCESS; - } - else { - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("CREATE TABLE addressbooks ( - id SERIAL NOT NULL, - principaluri VARCHAR(255), - displayname VARCHAR(255), - uri VARCHAR(200), - description TEXT, - synctoken INTEGER NOT NULL DEFAULT 1 - );" - ); - - $r2 = q("ALTER TABLE ONLY addressbooks ADD CONSTRAINT addressbooks_pkey PRIMARY KEY (id);"); - - $r3 = q("CREATE UNIQUE INDEX addressbooks_ukey ON addressbooks USING btree (principaluri, uri);"); - - $r4 = q("CREATE TABLE cards ( - id SERIAL NOT NULL, - addressbookid INTEGER NOT NULL, - carddata BYTEA, - uri VARCHAR(200), - lastmodified INTEGER, - etag VARCHAR(32), - size INTEGER NOT NULL - );" - ); - - $r5 = q("ALTER TABLE ONLY cards ADD CONSTRAINT cards_pkey PRIMARY KEY (id);"); - - $r6 = q("CREATE UNIQUE INDEX cards_ukey ON cards USING btree (addressbookid, uri);"); - - $r7 = q("CREATE TABLE addressbookchanges ( - id SERIAL NOT NULL, - uri VARCHAR(200) NOT NULL, - synctoken INTEGER NOT NULL, - addressbookid INTEGER NOT NULL, - operation SMALLINT NOT NULL - );" - ); - - $r8 = q("ALTER TABLE ONLY addressbookchanges ADD CONSTRAINT addressbookchanges_pkey PRIMARY KEY (id);"); - - $r9 = q("CREATE INDEX addressbookchanges_addressbookid_synctoken_ix ON addressbookchanges USING btree (addressbookid, synctoken);"); - - $r10 = q("CREATE TABLE calendarobjects ( - id SERIAL NOT NULL, - calendardata BYTEA, - uri VARCHAR(200), - calendarid INTEGER NOT NULL, - lastmodified INTEGER, - etag VARCHAR(32), - size INTEGER NOT NULL, - componenttype VARCHAR(8), - firstoccurence INTEGER, - lastoccurence INTEGER, - uid VARCHAR(200) - );" - ); - - $r11 = q("ALTER TABLE ONLY calendarobjects ADD CONSTRAINT calendarobjects_pkey PRIMARY KEY (id);"); - - $r12 = q("CREATE UNIQUE INDEX calendarobjects_ukey ON calendarobjects USING btree (calendarid, uri);"); - - $r13 = q("CREATE TABLE calendars ( - id SERIAL NOT NULL, - synctoken INTEGER NOT NULL DEFAULT 1, - components VARCHAR(21) - );" - ); - - $r14 = q("ALTER TABLE ONLY calendars ADD CONSTRAINT calendars_pkey PRIMARY KEY (id);"); - - $r15 = q("CREATE TABLE calendarinstances ( - id SERIAL NOT NULL, - calendarid INTEGER NOT NULL, - principaluri VARCHAR(100), - access SMALLINT NOT NULL DEFAULT '1', -- '1 = owner, 2 = read, 3 = readwrite' - displayname VARCHAR(100), - uri VARCHAR(200), - description TEXT, - calendarorder INTEGER NOT NULL DEFAULT 0, - calendarcolor VARCHAR(10), - timezone TEXT, - transparent SMALLINT NOT NULL DEFAULT '0', - share_href VARCHAR(100), - share_displayname VARCHAR(100), - share_invitestatus SMALLINT NOT NULL DEFAULT '2' -- '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid' - );" - ); - - $r16 = q("ALTER TABLE ONLY calendarinstances ADD CONSTRAINT calendarinstances_pkey PRIMARY KEY (id);"); - - $r17 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_uri ON calendarinstances USING btree (principaluri, uri);"); - - $r18 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_calendarid ON calendarinstances USING btree (principaluri, calendarid);"); - - $r19 = q("CREATE UNIQUE INDEX calendarinstances_principaluri_share_href ON calendarinstances USING btree (principaluri, share_href);"); - - $r20 = q("CREATE TABLE calendarsubscriptions ( - id SERIAL NOT NULL, - uri VARCHAR(200) NOT NULL, - principaluri VARCHAR(100) NOT NULL, - source TEXT, - displayname VARCHAR(100), - refreshrate VARCHAR(10), - calendarorder INTEGER NOT NULL DEFAULT 0, - calendarcolor VARCHAR(10), - striptodos SMALLINT NULL, - stripalarms SMALLINT NULL, - stripattachments SMALLINT NULL, - lastmodified INTEGER - );" - ); - - $r21 = q("ALTER TABLE ONLY calendarsubscriptions ADD CONSTRAINT calendarsubscriptions_pkey PRIMARY KEY (id);"); - - $r22 = q("CREATE UNIQUE INDEX calendarsubscriptions_ukey ON calendarsubscriptions USING btree (principaluri, uri);"); - - $r23 = q("CREATE TABLE calendarchanges ( - id SERIAL NOT NULL, - uri VARCHAR(200) NOT NULL, - synctoken INTEGER NOT NULL, - calendarid INTEGER NOT NULL, - operation SMALLINT NOT NULL DEFAULT 0 - );" - ); - - $r24 = q("ALTER TABLE ONLY calendarchanges ADD CONSTRAINT calendarchanges_pkey PRIMARY KEY (id);"); - - $r25 = q("CREATE INDEX calendarchanges_calendarid_synctoken_ix ON calendarchanges USING btree (calendarid, synctoken);"); - - $r26 = q("CREATE TABLE schedulingobjects ( - id SERIAL NOT NULL, - principaluri VARCHAR(255), - calendardata BYTEA, - uri VARCHAR(200), - lastmodified INTEGER, - etag VARCHAR(32), - size INTEGER NOT NULL - );" - ); - - $r27 = q("CREATE TABLE locks ( - id SERIAL NOT NULL, - owner VARCHAR(100), - timeout INTEGER, - created INTEGER, - token VARCHAR(100), - scope SMALLINT, - depth SMALLINT, - uri TEXT - );" - ); - - $r28 = q("ALTER TABLE ONLY locks ADD CONSTRAINT locks_pkey PRIMARY KEY (id);"); - - $r29 = q("CREATE INDEX locks_token_ix ON locks USING btree (token);"); - - $r30 = q("CREATE INDEX locks_uri_ix ON locks USING btree (uri);"); - - $r31 = q("CREATE TABLE principals ( - id SERIAL NOT NULL, - uri VARCHAR(200) NOT NULL, - email VARCHAR(80), - displayname VARCHAR(80) - );" - ); - - $r32 = q("ALTER TABLE ONLY principals ADD CONSTRAINT principals_pkey PRIMARY KEY (id);"); - - $r33 = q("CREATE UNIQUE INDEX principals_ukey ON principals USING btree (uri);"); - - $r34 = q("CREATE TABLE groupmembers ( - id SERIAL NOT NULL, - principal_id INTEGER NOT NULL, - member_id INTEGER NOT NULL - );" - ); - - $r35 = q("ALTER TABLE ONLY groupmembers ADD CONSTRAINT groupmembers_pkey PRIMARY KEY (id);"); - - $r36 = q("CREATE UNIQUE INDEX groupmembers_ukey ON groupmembers USING btree (principal_id, member_id);"); - - $r37 = q("CREATE TABLE propertystorage ( - id SERIAL NOT NULL, - path VARCHAR(1024) NOT NULL, - name VARCHAR(100) NOT NULL, - valuetype INT, - value BYTEA - );" - ); - - $r38 = q("ALTER TABLE ONLY propertystorage ADD CONSTRAINT propertystorage_pkey PRIMARY KEY (id);"); - - $r39 = q("CREATE UNIQUE INDEX propertystorage_ukey ON propertystorage (path, name);"); - - $r40 = q("CREATE TABLE users ( - id SERIAL NOT NULL, - username VARCHAR(50), - digesta1 VARCHAR(32) - );" - ); - - $r41 = q("ALTER TABLE ONLY users ADD CONSTRAINT users_pkey PRIMARY KEY (id);"); - - $r42 = q("CREATE UNIQUE INDEX users_ukey ON users USING btree (username);"); - - if( - $r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8 && $r9 && $r10 - && $r11 && $r12 && $r13 && $r14 && $r15 && $r16 && $r17 && $r18 && $r19 && $r20 - && $r21 && $r22 && $r23 && $r24 && $r25 && $r26 && $r27 && $r28 && $r29 && $r30 - && $r31 && $r32 && $r33 && $r34 && $r35 && $r36 && $r37 && $r38 && $r39 && $r40 - && $r41 && $r42 - ) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - } - else { - $r1 = q("CREATE TABLE if not exists addressbooks ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - principaluri VARBINARY(255), - displayname VARCHAR(255), - uri VARBINARY(200), - description TEXT, - synctoken INT(11) UNSIGNED NOT NULL DEFAULT '1', - UNIQUE(principaluri(100), uri(100)) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r2 = q("CREATE TABLE if not exists cards ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - addressbookid INT(11) UNSIGNED NOT NULL, - carddata MEDIUMBLOB, - uri VARBINARY(200), - lastmodified INT(11) UNSIGNED, - etag VARBINARY(32), - size INT(11) UNSIGNED NOT NULL - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r3 = q("CREATE TABLE if not exists addressbookchanges ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - uri VARBINARY(200) NOT NULL, - synctoken INT(11) UNSIGNED NOT NULL, - addressbookid INT(11) UNSIGNED NOT NULL, - operation TINYINT(1) NOT NULL, - INDEX addressbookid_synctoken (addressbookid, synctoken) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r4 = q("CREATE TABLE if not exists calendarobjects ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - calendardata MEDIUMBLOB, - uri VARBINARY(200), - calendarid INTEGER UNSIGNED NOT NULL, - lastmodified INT(11) UNSIGNED, - etag VARBINARY(32), - size INT(11) UNSIGNED NOT NULL, - componenttype VARBINARY(8), - firstoccurence INT(11) UNSIGNED, - lastoccurence INT(11) UNSIGNED, - uid VARBINARY(200), - UNIQUE(calendarid, uri), - INDEX calendarid_time (calendarid, firstoccurence) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r5 = q("CREATE TABLE if not exists calendars ( - id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - synctoken INTEGER UNSIGNED NOT NULL DEFAULT '1', - components VARBINARY(21) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r6 = q("CREATE TABLE if not exists calendarinstances ( - id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - calendarid INTEGER UNSIGNED NOT NULL, - principaluri VARBINARY(100), - access TINYINT(1) NOT NULL DEFAULT '1' COMMENT '1 = owner, 2 = read, 3 = readwrite', - displayname VARCHAR(100), - uri VARBINARY(200), - description TEXT, - calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', - calendarcolor VARBINARY(10), - timezone TEXT, - transparent TINYINT(1) NOT NULL DEFAULT '0', - share_href VARBINARY(100), - share_displayname VARCHAR(100), - share_invitestatus TINYINT(1) NOT NULL DEFAULT '2' COMMENT '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid', - UNIQUE(principaluri, uri), - UNIQUE(calendarid, principaluri), - UNIQUE(calendarid, share_href) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r7 = q("CREATE TABLE if not exists calendarchanges ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - uri VARBINARY(200) NOT NULL, - synctoken INT(11) UNSIGNED NOT NULL, - calendarid INT(11) UNSIGNED NOT NULL, - operation TINYINT(1) NOT NULL, - INDEX calendarid_synctoken (calendarid, synctoken) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r8 = q("CREATE TABLE if not exists calendarsubscriptions ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - uri VARBINARY(200) NOT NULL, - principaluri VARBINARY(100) NOT NULL, - source TEXT, - displayname VARCHAR(100), - refreshrate VARCHAR(10), - calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', - calendarcolor VARBINARY(10), - striptodos TINYINT(1) NULL, - stripalarms TINYINT(1) NULL, - stripattachments TINYINT(1) NULL, - lastmodified INT(11) UNSIGNED, - UNIQUE(principaluri, uri) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r9 = q("CREATE TABLE if not exists schedulingobjects ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - principaluri VARBINARY(255), - calendardata MEDIUMBLOB, - uri VARBINARY(200), - lastmodified INT(11) UNSIGNED, - etag VARBINARY(32), - size INT(11) UNSIGNED NOT NULL - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r10 = q("CREATE TABLE if not exists locks ( - id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - owner VARCHAR(100), - timeout INTEGER UNSIGNED, - created INTEGER, - token VARBINARY(100), - scope TINYINT, - depth TINYINT, - uri VARBINARY(1000), - INDEX(token), - INDEX(uri(100)) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r11 = q("CREATE TABLE if not exists principals ( - id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - uri VARBINARY(200) NOT NULL, - email VARBINARY(80), - displayname VARCHAR(80), - UNIQUE(uri) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r12 = q("CREATE TABLE if not exists groupmembers ( - id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - principal_id INTEGER UNSIGNED NOT NULL, - member_id INTEGER UNSIGNED NOT NULL, - UNIQUE(principal_id, member_id) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r13 = q("CREATE TABLE if not exists propertystorage ( - id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - path VARBINARY(1024) NOT NULL, - name VARBINARY(100) NOT NULL, - valuetype INT UNSIGNED, - value MEDIUMBLOB - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r14 = q("CREATE UNIQUE INDEX path_property ON propertystorage (path(600), name(100));"); - - $r15 = q("CREATE TABLE if not exists users ( - id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - username VARBINARY(50), - digesta1 VARBINARY(32), - UNIQUE(username) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - $r16 = q("CREATE TABLE if not exists calendarinstances ( - id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - calendarid INTEGER UNSIGNED NOT NULL, - principaluri VARBINARY(100), - access TINYINT(1) NOT NULL DEFAULT '1' COMMENT '1 = owner, 2 = read, 3 = readwrite', - displayname VARCHAR(100), - uri VARBINARY(200), - description TEXT, - calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', - calendarcolor VARBINARY(10), - timezone TEXT, - transparent TINYINT(1) NOT NULL DEFAULT '0', - share_href VARBINARY(100), - share_displayname VARCHAR(100), - share_invitestatus TINYINT(1) NOT NULL DEFAULT '2' COMMENT '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid', - UNIQUE(principaluri, uri), - UNIQUE(calendarid, principaluri), - UNIQUE(calendarid, share_href) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" - ); - - if($r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8 && $r9 && $r10 && $r11 && $r12 && $r13 && $r14 && $r15 && $r16) - return UPDATE_SUCCESS; - return UPDATE_FAILED; - } - } -} - -function update_r1192() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("CREATE INDEX item_obj_type ON item (obj_type)"); - } - else { - $r1 = q("ALTER TABLE item ADD INDEX (obj_type)"); - } - - if($r1) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1193() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("CREATE INDEX item_uid_unseen ON item (uid, item_unseen)"); - } - else { - $r1 = q("ALTER TABLE item ADD INDEX uid_item_unseen (uid, item_unseen)"); - } - - if($r1) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - - -function update_r1194() { - $r = q("select id, resource_id from item where resource_type = 'nwiki'"); - if($r) { - foreach($r as $rv) { - $mimetype = get_iconfig($rv['id'],'wiki','mimeType'); - q("update item set mimetype = '%s' where resource_type = 'nwikipage' and resource_id = '%s'", - dbesc($mimetype), - dbesc($rv['resource_id']) - ); - } - } - - return UPDATE_SUCCESS; -} - -function update_r1195() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("CREATE INDEX item_resource_id ON item (resource_id)"); - } - else { - $r1 = q("ALTER TABLE item ADD INDEX (resource_id)"); - } - - if($r1) - return UPDATE_SUCCESS; - return UPDATE_FAILED; -} - -function update_r1196() { - - if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { - $r1 = q("CREATE TABLE \"pchan\" ( - \"pchan_id\" serial NOT NULL, - \"pchan_guid\" text NOT NULL, - \"pchan_hash\" text NOT NULL, - \"pchan_pubkey\" text NOT NULL, - \"pchan_prvkey\" text NOT NULL, - PRIMARY KEY (\"pchan_id\") -)"); - - $r2 = q("create index \"pchan_guid\" on pchan (\"pchan_guid\")"); - $r3 = q("create index \"pchan_hash\" on pchan (\"pchan_hash\")"); - - if($r1 && $r2 && $r3) { - return UPDATE_SUCCESS; - } - } - else { - $r1 = q("CREATE TABLE IF NOT EXISTS pchan ( - pchan_id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, - pchan_guid char(191) NOT NULL DEFAULT '', - pchan_hash char(191) NOT NULL DEFAULT '', - pchan_pubkey text NOT NULL, - pchan_prvkey text NOT NULL, - PRIMARY KEY (pchan_id), - KEY pchan_guid (pchan_guid), - KEY pchan_hash (pchan_hash) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); - if($r1) { - return UPDATE_SUCCESS; - } - } - - return UPDATE_FAILED; -} - -function update_r1197() { - - $r = q("select diaspora_meta from item where true limit 1"); - if($r) { - $r = q("ALTER TABLE item DROP diaspora_meta"); - } - - return UPDATE_SUCCESS; -} diff --git a/library/Mobile_Detect/Mobile_Detect.php b/library/Mobile_Detect/Mobile_Detect.php deleted file mode 100644 index 4b8c9fecb..000000000 --- a/library/Mobile_Detect/Mobile_Detect.php +++ /dev/null @@ -1,221 +0,0 @@ -<?php
-/**
- * Mobile Detect
- * $Id: Mobile_Detect.php 49 2012-06-06 20:46:30Z serbanghita@gmail.com $
- *
- * @usage require_once 'Mobile_Detect.php';
- * $detect = new Mobile_Detect();
- * $detect->isMobile() or $detect->isTablet()
- *
- * For more specific usage see the documentation navigate to:
- * http://code.google.com/p/php-mobile-detect/wiki/Mobile_Detect
- *
- * @license http://www.opensource.org/licenses/mit-license.php The MIT License
- */
-
-class Mobile_Detect {
-
- protected $detectionRules;
- protected $userAgent = null;
- protected $accept = null;
- // Assume the visitor has a desktop environment.
- protected $isMobile = false;
- protected $isTablet = false;
- protected $phoneDeviceName = null;
- protected $tabletDevicename = null;
- protected $operatingSystemName = null;
- protected $userAgentName = null;
- // List of mobile devices (phones)
- protected $phoneDevices = array(
- 'iPhone' => '(iPhone.*Mobile|iPod|iTunes)',
- 'BlackBerry' => 'BlackBerry|rim[0-9]+',
- 'HTC' => 'HTC|HTC.*(6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT',
- 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus',
- 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35',
- 'Motorola' => '\bDroid\b.*Build|DROIDX|HRI39|MOT\-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT909|XT910|XT912|XT928',
- 'Samsung' => 'Samsung|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9300 |GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-P6810|GT-P7100|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100',
- 'Sony' => 'E10i|SonyEricsson|SonyEricssonLT15iv',
- 'Asus' => 'Asus.*Galaxy',
- 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; @todo - complete the regex.
- 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;)
- 'GenericPhone' => '(mmp|pocket|psp|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|wap|nokia|Series40|Series60|S60|SonyEricsson|N900|PPC;|MAUI.*WAP.*Browser|LG-P500)'
- );
- // List of tablet devices.
- protected $tabletDevices = array(
- 'BlackBerryTablet' => 'PlayBook|RIM Tablet',
- 'iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic.
- 'Kindle' => 'Kindle|Silk.*Accelerated',
- 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|GT-P1000|GT-P1010|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P1000|GT-P3100|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7300|GT-P7320|GT-P7500|GT-P7510|GT-P7511',
- 'HTCtablet' => 'HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200',
- 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617',
- 'AsusTablet' => 'Transformer|TF101',
- 'NookTablet' => 'NookColor|nook browser|BNTV250A|LogicPD Zoom2',
- 'AcerTablet' => 'Android.*\b(A100|A101|A200|A500|A501|A510|W500|W500P|W501|W501P)\b',
- 'YarvikTablet' => 'Android.*(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468)',
- 'GenericTablet' => 'Tablet(?!.*PC)|ViewPad7|LG-V909|MID7015|BNTV250A|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b',
- );
- // List of mobile Operating Systems.
- protected $operatingSystems = array(
- 'AndroidOS' => '(android.*mobile|android(?!.*mobile))',
- 'BlackBerryOS' => '(blackberry|rim tablet os)',
- 'PalmOS' => '(avantgo|blazer|elaine|hiptop|palm|plucker|xiino)',
- 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|\bS60\b',
- 'WindowsMobileOS' => 'IEMobile|Windows Phone|Windows CE.*(PPC|Smartphone)|MSIEMobile|Window Mobile|XBLWP7',
- 'iOS' => '(iphone|ipod|ipad)',
- 'FlashLiteOS' => '',
- 'JavaOS' => '',
- 'NokiaOS' => '',
- 'webOS' => '',
- 'badaOS' => '\bBada\b',
- 'BREWOS' => '',
- );
- // List of mobile User Agents.
- protected $userAgents = array(
- 'Chrome' => '\bCrMo\b|Chrome\/[.0-9]* Mobile',
- 'Dolfin' => '\bDolfin\b',
- 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera',
- 'Skyfire' => 'skyfire',
- 'IE' => 'IEMobile|MSIEMobile',
- 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile',
- 'Bolt' => 'bolt',
- 'TeaShark' => 'teashark',
- 'Blazer' => 'Blazer',
- 'Safari' => 'Mobile.*Safari|Safari.*Mobile',
- 'Midori' => 'midori',
- 'GenericBrowser' => 'NokiaBrowser|OviBrowser|SEMC.*Browser'
- );
-
- function __construct(){
-
- // Merge all rules together.
- $this->detectionRules = array_merge(
- $this->phoneDevices,
- $this->tabletDevices,
- $this->operatingSystems,
- $this->userAgents
- );
- $this->userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null;
- $this->accept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null;
-
- if (
- isset($_SERVER['HTTP_X_WAP_PROFILE']) ||
- isset($_SERVER['HTTP_X_WAP_CLIENTID']) ||
- isset($_SERVER['HTTP_WAP_CONNECTION']) ||
- isset($_SERVER['HTTP_PROFILE']) ||
- isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA']) || // Reported by Nokia devices (eg. C3)
- isset($_SERVER['HTTP_X_NOKIA_IPADDRESS']) ||
- isset($_SERVER['HTTP_X_NOKIA_GATEWAY_ID']) ||
- isset($_SERVER['HTTP_X_ORANGE_ID']) ||
- isset($_SERVER['HTTP_X_VODAFONE_3GPDPCONTEXT']) ||
- isset($_SERVER['HTTP_X_HUAWEI_USERID']) ||
- isset($_SERVER['HTTP_UA_OS']) || // Reported by Windows Smartphones
- (isset($_SERVER['HTTP_UA_CPU']) && $_SERVER['HTTP_UA_CPU'] == 'ARM') // Seen this on a HTC
- ) {
- $this->isMobile = true;
- } elseif (!empty($this->accept) && (strpos($this->accept, 'text/vnd.wap.wml') !== false || strpos($this->accept, 'application/vnd.wap.xhtml+xml') !== false)) {
- $this->isMobile = true;
- } else {
- $this->_detect();
- }
-
- }
-
- public function getRules()
- {
- return $this->detectionRules;
- }
-
- /**
- * Magic overloading method.
- *
- * @method boolean is[...]()
- * @param string $name
- * @param array $arguments
- * @return mixed
- */
- public function __call($name, $arguments)
- {
-
- $key = substr($name, 2);
- return $this->_detect($key);
-
- }
-
- /**
- * Private method that does the detection of the
- * mobile devices.
- *
- * @param string $key
- * @return boolean|null
- */
- private function _detect($key='')
- {
-
- if(empty($key)){
-
- // Begin general search.
- foreach($this->detectionRules as $_regex){
- if(empty($_regex)){ continue; }
- if(preg_match('/'.$_regex.'/is', $this->userAgent)){
- $this->isMobile = true;
- return true;
- }
- }
- return false;
-
- } else {
-
- // Search for a certain key.
- // Make the keys lowecase so we can match: isIphone(), isiPhone(), isiphone(), etc.
- $key = strtolower($key);
- $_rules = array_change_key_case($this->detectionRules);
-
- if(array_key_exists($key, $_rules)){
- if(empty($_rules[$key])){ return null; }
- if(preg_match('/'.$_rules[$key].'/is', $this->userAgent)){
- $this->isMobile = true;
- return true;
- } else {
- return false;
- }
- } else {
- trigger_error("Method $key is not defined", E_USER_WARNING);
- }
-
- return false;
-
- }
-
- }
-
- /**
- * Check if the device is mobile.
- * Returns true if any type of mobile device detected, including special ones
- * @return bool
- */
- public function isMobile()
- {
- return $this->isMobile;
- }
-
- /**
- * Check if the device is a tablet.
- * Return true if any type of tablet device is detected.
- * @return boolean
- */
- public function isTablet()
- {
-
- foreach($this->tabletDevices as $_regex){
- if(preg_match('/'.$_regex.'/is', $this->userAgent)){
- $this->isTablet = true;
- return true;
- }
- }
-
- return false;
-
- }
-
-
-}
\ No newline at end of file diff --git a/tests/phpunit-pgsql.xml b/tests/phpunit-pgsql.xml index ec4a6fc2d..078056d56 100644 --- a/tests/phpunit-pgsql.xml +++ b/tests/phpunit-pgsql.xml @@ -32,4 +32,15 @@ highLowerBound="70"/> <log type="testdox-text" target="./results/testdox.txt"/> </logging> + <php> + <!-- Default test database config, only used if no environment variables + with same names are set. + !!! Never run against a real database, it will truncate all tables --> + <env name="hz_db_server" value="127.0.0.1"/> + <env name="hz_db_scheme" value="pgsql"/> + <env name="hz_db_port" value="5432"/> + <env name="hz_db_user" value="travis_hz"/> + <env name="hz_db_pass" value="hubzilla"/> + <env name="hz_db_database" value="travis_hubzilla"/> + </php> </phpunit> diff --git a/tests/phpunit.xml.dist b/tests/phpunit.xml.dist index a22317b08..97c84fb81 100644 --- a/tests/phpunit.xml.dist +++ b/tests/phpunit.xml.dist @@ -35,4 +35,15 @@ highLowerBound="70"/> <log type="testdox-text" target="./results/testdox.txt"/> </logging> + <php> + <!-- Default test database config, only used if no environment variables + with same names are set. + !!! Never run against a real database, it will truncate all tables --> + <env name="hz_db_server" value="127.0.0.1"/> + <env name="hz_db_scheme" value="mysql"/> + <env name="hz_db_port" value="3306"/> + <env name="hz_db_user" value="travis_hz"/> + <env name="hz_db_pass" value="hubzilla"/> + <env name="hz_db_database" value="travis_hubzilla"/> + </php> </phpunit> diff --git a/tests/travis/prepare_mysql.sh b/tests/travis/prepare_mysql.sh index 095ad7e25..5b1c96d78 100755 --- a/tests/travis/prepare_mysql.sh +++ b/tests/travis/prepare_mysql.sh @@ -25,7 +25,7 @@ # Exit if anything fails set -e -echo "Preparing for MySQL ..." +echo "Preparing for MySQL/MariaDB ..." if [[ "$MYSQL_VERSION" == "5.7" ]]; then echo "Using MySQL 5.7 in Docker container, need to use TCP" @@ -41,13 +41,13 @@ mysql $PROTO -e "SHOW VARIABLES LIKE 'character_set%';" mysql $PROTO -e "SELECT @@sql_mode;" # Create Hubzilla database -mysql $PROTO -u root -e "CREATE DATABASE IF NOT EXISTS hubzilla;"; -mysql $PROTO -u root -e "CREATE USER 'hubzilla'@'localhost' IDENTIFIED BY 'hubzilla';" -mysql $PROTO -u root -e "GRANT ALL ON hubzilla.* TO 'hubzilla'@'localhost';" +mysql $PROTO -u root -e "CREATE DATABASE IF NOT EXISTS travis_hubzilla;"; +mysql $PROTO -u root -e "CREATE USER 'travis_hz'@'%' IDENTIFIED BY 'hubzilla';" +mysql $PROTO -u root -e "GRANT ALL ON travis_hubzilla.* TO 'travis_hz'@'%';" # Import table structure -mysql $PROTO -u root hubzilla < ./install/schema_mysql.sql +mysql $PROTO -u root travis_hubzilla < ./install/schema_mysql.sql # Show databases and tables mysql $PROTO -u root -e "SHOW DATABASES;" -mysql $PROTO -u root -e "USE hubzilla; SHOW TABLES;" +mysql $PROTO -u root -e "USE travis_hubzilla; SHOW TABLES;" diff --git a/tests/travis/prepare_pgsql.sh b/tests/travis/prepare_pgsql.sh index 63c7388cb..0175b9858 100755 --- a/tests/travis/prepare_pgsql.sh +++ b/tests/travis/prepare_pgsql.sh @@ -33,12 +33,17 @@ psql --version psql -U postgres -c "SELECT VERSION();" # Create Hubzilla database -psql -U postgres -c "DROP DATABASE IF EXISTS hubzilla;" -psql -U postgres -c "CREATE DATABASE hubzilla;" +psql -U postgres -c "DROP DATABASE IF EXISTS travis_hubzilla;" +psql -U postgres -v ON_ERROR_STOP=1 <<-EOSQL + CREATE USER travis_hz WITH PASSWORD 'hubzilla'; + CREATE DATABASE travis_hubzilla; + ALTER DATABASE travis_hubzilla OWNER TO travis_hz; + GRANT ALL PRIVILEGES ON DATABASE travis_hubzilla TO travis_hz; +EOSQL # Import table structure -psql -U postgres -v ON_ERROR_STOP=1 hubzilla < ./install/schema_postgres.sql +psql -U travis_hz -v ON_ERROR_STOP=1 travis_hubzilla < ./install/schema_postgres.sql # Show databases and tables psql -U postgres -l -psql -U postgres -d hubzilla -c "\dt;" +psql -U postgres -d travis_hubzilla -c "\dt;" diff --git a/tests/unit/DatabaseTestCase.php b/tests/unit/DatabaseTestCase.php new file mode 100644 index 000000000..18c1cfb17 --- /dev/null +++ b/tests/unit/DatabaseTestCase.php @@ -0,0 +1,68 @@ +<?php +/* Copyright (c) 2017 Hubzilla + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +namespace Zotlabs\Tests\Unit; + +use PHPUnit\DbUnit\TestCaseTrait; +use PHPUnit\Framework\TestCase; + +/** + * @brief Base class for our Database Unit Tests. + * + * @warning Never run these tests against a production database, because all + * tables will get truncated and there is no way to recover without a backup. + * + * @author Klaus Weidenbach + */ +abstract class DatabaseTestCase extends TestCase { + + use TestCaseTrait; + + /** + * Only instantiate PDO once for test clean-up/fixture load. + * + * @var \PDO + */ + static private $pdo = null; + + /** + * Only instantiate \PHPUnit\DbUnit\Database\Connection once per test. + * + * @var \PHPUnit\DbUnit\Database\Connection + */ + private $conn = null; + + + final public function getConnection() { + if ($this->conn === null) { + if (self::$pdo === null) { + $dsn = \getenv('hz_db_scheme') . ':host=' . \getenv('hz_db_server') + . ';port=' . \getenv('hz_db_port') . ';dbname=' . \getenv('hz_db_database'); + + self::$pdo = new \PDO($dsn, \getenv('hz_db_user'), \getenv('hz_db_pass')); + } + $this->conn = $this->createDefaultDBConnection(self::$pdo, \getenv('hz_db_database')); + } + + return $this->conn; + } +} diff --git a/tests/unit/includes/dba/DBATest.php b/tests/unit/includes/dba/DBATest.php new file mode 100644 index 000000000..900d13083 --- /dev/null +++ b/tests/unit/includes/dba/DBATest.php @@ -0,0 +1,67 @@ +<?php +/* + * Copyright (c) 2017 Hubzilla + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +namespace Zotlabs\Tests\Unit\includes; + +use Zotlabs\Tests\Unit\UnitTestCase; + +// required because of process isolation and no autoloading +require_once 'include/dba/dba_driver.php'; + +/** + * @brief Unit Test case for include/dba/DBA.php file. + * + * This test needs process isolation because of static \DBA. + * @runTestsInSeparateProcesses + */ +class DBATest extends UnitTestCase { + + public function testDbaFactoryMysql() { + $this->assertNull(\DBA::$dba); + + $ret = \DBA::dba_factory('server', 'port', 'user', 'pass', 'db', '0'); + $this->assertInstanceOf('dba_pdo', $ret); + $this->assertFalse($ret->connected); + + $this->assertSame('mysql', \DBA::$scheme); + $this->assertSame('schema_mysql.sql', \DBA::$install_script); + $this->assertSame('0001-01-01 00:00:00', \DBA::$null_date); + $this->assertSame('UTC_TIMESTAMP()', \DBA::$utc_now); + $this->assertSame('`', \DBA::$tquot); + } + + public function testDbaFactoryPostgresql() { + $this->assertNull(\DBA::$dba); + + $ret = \DBA::dba_factory('server', 'port', 'user', 'pass', 'db', '1'); + $this->assertInstanceOf('dba_pdo', $ret); + $this->assertFalse($ret->connected); + + $this->assertSame('pgsql', \DBA::$scheme); + $this->assertSame('schema_postgres.sql', \DBA::$install_script); + $this->assertSame('0001-01-01 00:00:00', \DBA::$null_date); + $this->assertSame("now() at time zone 'UTC'", \DBA::$utc_now); + $this->assertSame('"', \DBA::$tquot); + } + +} diff --git a/tests/unit/includes/dba/_files/account.yml b/tests/unit/includes/dba/_files/account.yml new file mode 100644 index 000000000..344bdb799 --- /dev/null +++ b/tests/unit/includes/dba/_files/account.yml @@ -0,0 +1,9 @@ +account: + - + account_id: 42 + account_email: "hubzilla@example.com" + account_language: "no" + - + account_id: 43 + account_email: "hubzilla@example.org" + account_language: "de" diff --git a/tests/unit/includes/dba/dba_pdoTest.php b/tests/unit/includes/dba/dba_pdoTest.php new file mode 100644 index 000000000..12e574d42 --- /dev/null +++ b/tests/unit/includes/dba/dba_pdoTest.php @@ -0,0 +1,189 @@ +<?php +/* + * Copyright (c) 2017 Hubzilla + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +namespace Zotlabs\Tests\Unit\includes; + +use Zotlabs\Tests\Unit\DatabaseTestCase; +use PHPUnit\DbUnit\TestCaseTrait; +use PHPUnit\DbUnit\DataSet\YamlDataSet; + +require_once 'include/dba/dba_pdo.php'; + +/** + * @brief Unit Test case for include/dba/dba_pdo.php file. + * + * Some very basic tests to see if our database layer can connect to a real + * database. + */ +class dba_pdoTest extends DatabaseTestCase { + + use TestCaseTrait; + + /** + * @var \dba_driver + */ + protected $dba; + + + /** + * Set initial state of the database before each test is executed. + * Load database fixtures. + * + * @return \PHPUnit\DbUnit\DataSet\IDataSet + */ + public function getDataSet() { + return new YamlDataSet(dirname(__FILE__) . '/_files/account.yml'); + } + + protected function setUp() { + // Will invoke getDataSet() to load fixtures into DB + parent::setUp(); + + $this->dba = new \dba_pdo( + \getenv('hz_db_server'), + \getenv('hz_db_scheme'), + \getenv('hz_db_port'), + \getenv('hz_db_user'), + \getenv('hz_db_pass'), + \getenv('hz_db_database') + ); + } + protected function assertPreConditions() { + $this->assertSame('pdo', $this->dba->getdriver(), "Driver is expected to be 'pdo'."); + $this->assertInstanceOf('dba_driver', $this->dba); + $this->assertTrue($this->dba->connected, 'Pre condition failed, DB is not connected.'); + $this->assertInstanceOf('PDO', $this->dba->db); + } + protected function tearDown() { + $this->dba = null; + } + + + /** + * @group mysql + */ + public function testQuoteintervalOnMysql() { + $this->assertSame('value', $this->dba->quote_interval('value')); + } + /** + * @group postgresql + */ + public function testQuoteintervalOnPostgresql() { + $this->assertSame("'value'", $this->dba->quote_interval('value')); + } + + /** + * @group mysql + */ + public function testGenerateMysqlConcatSql() { + $this->assertSame('GROUP_CONCAT(DISTINCT field SEPARATOR \';\')', $this->dba->concat('field', ';')); + $this->assertSame('GROUP_CONCAT(DISTINCT field2 SEPARATOR \' \')', $this->dba->concat('field2', ' ')); + } + /** + * @group postgresql + */ + public function testGeneratePostgresqlConcatSql() { + $this->assertSame('string_agg(field,\';\')', $this->dba->concat('field', ';')); + $this->assertSame('string_agg(field2,\' \')', $this->dba->concat('field2', ' ')); + } + + + public function testConnectToSqlServer() { + // connect() is done in dba_pdo constructor which is called in setUp() + $this->assertTrue($this->dba->connected); + } + + /** + * @depends testConnectToSqlServer + */ + public function testCloseSqlServerConnection() { + $this->dba->close(); + + $this->assertNull($this->dba->db); + $this->assertFalse($this->dba->connected); + } + + /** + * @depends testConnectToSqlServer + */ + public function testSelectQueryShouldReturnArray() { + $ret = $this->dba->q('SELECT * FROM account'); + + $this->assertTrue(is_array($ret)); + } + + /** + * @depends testConnectToSqlServer + */ + public function testInsertQueryShouldReturnPdostatement() { + // Fixture account.yml adds two entries to account table + $this->assertEquals(2, $this->getConnection()->getRowCount('account'), 'Pre-Condition'); + + $ret = $this->dba->q('INSERT INTO account + (account_id, account_email, account_language) + VALUES (100, \'insert@example.com\', \'de\') + '); + $this->assertInstanceOf('PDOStatement', $ret); + + $this->assertEquals(3, $this->getConnection()->getRowCount('account'), 'Inserting failed'); + } + + + public function testConnectToWrongSqlServer() { + $nodba = new \dba_pdo('wrongserver', + \getenv('hz_db_scheme'), \getenv('hz_db_port'), + \getenv('hz_db_user'), \getenv('hz_db_pass'), + \getenv('hz_db_database') + ); + + $this->assertSame('pdo', $nodba->getdriver()); + $this->assertInstanceOf('dba_pdo', $nodba); + $this->assertFalse($nodba->connected); + $this->assertNull($nodba->db); + + $this->assertFalse($nodba->q('SELECT * FROM account')); + } + + /** + * @depends testConnectToSqlServer + */ + public function testSelectQueryToNonExistentTableShouldReturnFalse() { + $ret = $this->dba->q('SELECT * FROM non_existent_table'); + + $this->assertFalse($ret); + } + + /** + * @depends testConnectToSqlServer + */ + public function testInsertQueryToNonExistentTableShouldReturnEmptyArray() { + $ret = $this->dba->q('INSERT INTO non_existent_table + (account_email, account_language) + VALUES (\'email@example.com\', \'en\') + '); + + $this->assertNotInstanceOf('PDOStatement', $ret); + $this->isEmpty($ret); + } + +} diff --git a/view/css/conversation.css b/view/css/conversation.css index 77a600deb..f7ab3dcdd 100644 --- a/view/css/conversation.css +++ b/view/css/conversation.css @@ -286,7 +286,6 @@ img.smiley.emoji:hover { height: 32px; } - .checklist input { margin: 0px; vertical-align: middle; @@ -296,6 +295,15 @@ img.smiley.emoji:hover { padding: 15px; } +.view-summary { + margin-bottom: 1rem; +} + +.view-article { + margin-top: 1rem; +} + + #filer_save { margin-left: 15px; } diff --git a/view/css/mod_profile_photo.css b/view/css/mod_profile_photo.css index 5540b5fae..1b7e15194 100644 --- a/view/css/mod_profile_photo.css +++ b/view/css/mod_profile_photo.css @@ -9,4 +9,12 @@ #profile-photo-submit-wrapper { clear: both; -}
\ No newline at end of file +} + +#profile-photo-wrapper { + height: 300px; + width: 300px; + max-width: 300px; + max-height: 300px; + overflow: hidden; +} diff --git a/view/css/mod_wiki.css b/view/css/mod_wiki.css index 4e4c71e1d..e0b02b414 100644 --- a/view/css/mod_wiki.css +++ b/view/css/mod_wiki.css @@ -48,3 +48,24 @@ td i { padding-right: 10px; } +pre code { + background: #F5F5F5; + font-family: Courier, monospace; + font-size: 1em; + padding: 1em 1.5em; + display: block; + white-space: pre-wrap; +} + +code { + background: #F5F5F5; + font-family: Courier, monospace; + font-size: 1em; + display: inline; + padding: 0.2em 0.2em; + white-space: pre-wrap; +} + +#wiki-content-container code { + background: #F5F5F5; +}
\ No newline at end of file diff --git a/view/de-de/hmessages.po b/view/de-de/hmessages.po index e7c962bbd..f68a96c22 100644 --- a/view/de-de/hmessages.po +++ b/view/de-de/hmessages.po @@ -12377,27 +12377,27 @@ msgstr "Ungespeicherte Änderungen. Bist Du sicher, dass Du diese Seite verlasse #: ../../include/js_strings.php:27 msgid "timeago.prefixAgo" -msgstr "timeago.prefixAgo" +msgstr "vor" #: ../../include/js_strings.php:28 msgid "timeago.prefixFromNow" -msgstr " " +msgstr "in" #: ../../include/js_strings.php:29 -msgid "ago" -msgstr "her" +msgid "timeago.suffixAgo" +msgstr "NONE" #: ../../include/js_strings.php:30 -msgid "from now" -msgstr "von jetzt" +msgid "timeago.suffixFromNow" +msgstr "NONE" #: ../../include/js_strings.php:31 msgid "less than a minute" -msgstr "weniger als eine Minute" +msgstr "weniger als einer Minute" #: ../../include/js_strings.php:32 msgid "about a minute" -msgstr "ungefähr eine Minute" +msgstr "ungefähr einer Minute" #: ../../include/js_strings.php:33 #, php-format @@ -12406,7 +12406,7 @@ msgstr "%d Minuten" #: ../../include/js_strings.php:34 msgid "about an hour" -msgstr "ungefähr eine Stunde" +msgstr "ungefähr einer Stunde" #: ../../include/js_strings.php:35 #, php-format @@ -12415,30 +12415,30 @@ msgstr "ungefähr %d Stunden" #: ../../include/js_strings.php:36 msgid "a day" -msgstr "ein Tag" +msgstr "einem Tag" #: ../../include/js_strings.php:37 #, php-format msgid "%d days" -msgstr "%d Tage" +msgstr "%d Tagen" #: ../../include/js_strings.php:38 msgid "about a month" -msgstr "ungefähr einen Monat" +msgstr "ungefähr einem Monat" #: ../../include/js_strings.php:39 #, php-format msgid "%d months" -msgstr "%d Monate" +msgstr "%d Monaten" #: ../../include/js_strings.php:40 msgid "about a year" -msgstr "ungefähr ein Jahr" +msgstr "ungefähr einem Jahr" #: ../../include/js_strings.php:41 #, php-format msgid "%d years" -msgstr "%d Jahre" +msgstr "%d Jahren" #: ../../include/js_strings.php:42 msgid " " diff --git a/view/de-de/hstrings.php b/view/de-de/hstrings.php index 61db3fb5d..e87f660f0 100644 --- a/view/de-de/hstrings.php +++ b/view/de-de/hstrings.php @@ -1,7 +1,7 @@ <?php -if(! function_exists("string_plural_select_de")) { -function string_plural_select_de($n){ +if(! function_exists("string_plural_select_de_de")) { +function string_plural_select_de_de($n){ return ($n != 1);; }} App::$rtl = 0; @@ -2790,21 +2790,21 @@ App::$strings["Rate This Channel (this is public)"] = "Diesen Kanal bewerten (ö App::$strings["Describe (optional)"] = "Beschreibung (optional)"; App::$strings["Please enter a link URL"] = "Gib eine URL ein:"; App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Ungespeicherte Änderungen. Bist Du sicher, dass Du diese Seite verlassen möchtest?"; -App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo"; -App::$strings["timeago.prefixFromNow"] = " "; -App::$strings["ago"] = "her"; -App::$strings["from now"] = "von jetzt"; -App::$strings["less than a minute"] = "weniger als eine Minute"; -App::$strings["about a minute"] = "ungefähr eine Minute"; +App::$strings["timeago.prefixAgo"] = "vor"; +App::$strings["timeago.prefixFromNow"] = "in"; +App::$strings["timeago.suffixAgo"] = "NONE"; +App::$strings["timeago.suffixFromNow"] = "NONE"; +App::$strings["less than a minute"] = "weniger als einer Minute"; +App::$strings["about a minute"] = "ungefähr einer Minute"; App::$strings["%d minutes"] = "%d Minuten"; -App::$strings["about an hour"] = "ungefähr eine Stunde"; +App::$strings["about an hour"] = "ungefähr einer Stunde"; App::$strings["about %d hours"] = "ungefähr %d Stunden"; -App::$strings["a day"] = "ein Tag"; -App::$strings["%d days"] = "%d Tage"; -App::$strings["about a month"] = "ungefähr einen Monat"; -App::$strings["%d months"] = "%d Monate"; -App::$strings["about a year"] = "ungefähr ein Jahr"; -App::$strings["%d years"] = "%d Jahre"; +App::$strings["a day"] = "einem Tag"; +App::$strings["%d days"] = "%d Tagen"; +App::$strings["about a month"] = "ungefähr einem Monat"; +App::$strings["%d months"] = "%d Monaten"; +App::$strings["about a year"] = "ungefähr einem Jahr"; +App::$strings["%d years"] = "%d Jahren"; App::$strings[" "] = " "; App::$strings["timeago.numbers"] = "timeago.numbers"; App::$strings["__ctx:long__ May"] = "Mai"; diff --git a/view/js/main.js b/view/js/main.js index 02b0f125c..f6fe475d8 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -357,6 +357,9 @@ function closeMenu(theID) { function markRead(notifType) { $.get('ping?f=&markRead='+notifType); $('.' + notifType + '-button').hide(); + $('#nav-' + notifType + '-sub').removeClass('show'); + sessionStorage.removeItem(notifType + '_notifications_cache'); + sessionStorage.removeItem('notification_open'); if(timer) clearTimeout(timer); timer = setTimeout(updateInit,2000); } @@ -436,6 +439,7 @@ function handleNotifications(data) { if(item == 0) { $('.' + index + '-button').fadeOut(); + sessionStorage.removeItem(index + '_notifications_cache'); } else { $('.' + index + '-button').fadeIn(); $('.' + index + '-update').html(item); diff --git a/view/js/mod_new_channel.js b/view/js/mod_new_channel.js index e670e1a35..7ae59032a 100644 --- a/view/js/mod_new_channel.js +++ b/view/js/mod_new_channel.js @@ -1,5 +1,7 @@ $(document).ready(function() { -// $("#id_permissions_role").sSelect(); + + $("#newchannel-submit-button").attr('disabled','disabled'); + $("#id_name").blur(function() { $("#name-spinner").show(); var zreg_name = $("#id_name").val(); @@ -13,17 +15,26 @@ }); }); - $("#id_nickname").blur(function() { - $("#nick-spinner").show(); - var zreg_nick = $("#id_nickname").val(); - $.get("new_channel/checkaddr.json?f=&nick=" + encodeURIComponent(zreg_nick),function(data) { - $("#id_nickname").val(data); - if(data.error) { - $("#help_nickname").html(""); - zFormError("#help_nickname",data.error); - } - $("#nick-spinner").hide(); - }); + $("#id_nickname").click(function() { + $("#newchannel-submit-button").attr('disabled','disabled'); }); }); + + + function validate_channel() { + $("#nick-spinner").show(); + var zreg_nick = $("#id_nickname").val(); + $.get("new_channel/checkaddr.json?f=&nick=" + encodeURIComponent(zreg_nick),function(data) { + $("#id_nickname").val(data); + if(data.error) { + $("#help_nickname").html(""); + zFormError("#help_nickname",data.error); + } + else { + $("#newchannel-submit-button").removeAttr('disabled'); + } + $("#nick-spinner").hide(); + }); + + } diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index b0a109c92..1611cda60 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -381,14 +381,9 @@ footer { margin: 15px 0px; } -#cropimage-wrapper, #cropimage-preview-wrapper { - float: left; - padding: 30px; -} - -#crop-image-form { - margin-top: 30px; - clear: both; +#cropimage-wrapper, +#cropimage-preview-wrapper { + margin-bottom: 10px; } .fn { diff --git a/view/tpl/abook_edit.tpl b/view/tpl/abook_edit.tpl index 81c182e1b..d72258fa0 100755 --- a/view/tpl/abook_edit.tpl +++ b/view/tpl/abook_edit.tpl @@ -215,7 +215,7 @@ <span id="vcard-preview-{{$vcard.id}}" class="vcard-preview"> {{if $vcard.fn}}<span class="vcard-fn-preview">{{$vcard.fn}}</span>{{/if}} {{if $vcard.emails.0.address}}<span class="vcard-email-preview d-none d-md-table-cell"><a href="mailto:{{$vcard.emails.0.address}}">{{$vcard.emails.0.address}}</a></span>{{/if}} - {{if $vcard.tels.0}}<span class="vcard-tel-preview d-none d-md-table-cell">{{$vcard.tels.0.nr}}{{if $is_mobile}} <a class="btn btn-outline-secondary btn-sm" href="tel:{{$vcard.tels.0.nr}}"><i class="fa fa-phone connphone"></i></a>{{/if}}</span>{{/if}} + {{if $vcard.tels.0}}<span class="vcard-tel-preview d-none d-md-table-cell">{{$vcard.tels.0.nr}} <a class="btn btn-outline-secondary btn-sm" href="tel:{{$vcard.tels.0.nr}}"><i class="fa fa-phone connphone"></i></a></span>{{/if}} </span> <input id="vcard-fn-{{$vcard.id}}" class="vcard-fn" type="text" name="fn" value="{{$vcard.fn}}" size="{{$vcard.fn|count_characters:true}}" placeholder="{{$name_label}}"> </div> diff --git a/view/tpl/admin_site.tpl b/view/tpl/admin_site.tpl index 0eabe620d..78e3ee245 100755 --- a/view/tpl/admin_site.tpl +++ b/view/tpl/admin_site.tpl @@ -84,6 +84,7 @@ {{include file="field_checkbox.tpl" field=$force_publish}} {{include file="field_checkbox.tpl" field=$disable_discover_tab}} {{include file="field_checkbox.tpl" field=$site_firehose}} + {{include file="field_checkbox.tpl" field=$open_pubstream}} <div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div> diff --git a/view/tpl/cropbody.tpl b/view/tpl/cropbody.tpl index d35546ec6..a8b8207cb 100755 --- a/view/tpl/cropbody.tpl +++ b/view/tpl/cropbody.tpl @@ -6,7 +6,7 @@ <img src="{{$image_url}}" id="croppa" class="imgCrop" alt="{{$title}}" /> </div> <div id="cropimage-preview-wrapper" > -<div id="previewWrap" class="crop-preview" style="height: 300px; width: 300px; max-width: 300px; max-height: 300px; overflow: hidden;"></div> +<div id="previewWrap" class="crop-preview d-lg-none" style="height: 300px; width: 300px; max-width: 300px; max-height: 300px; overflow: hidden;"></div> </div> <script type="text/javascript" language="javascript"> @@ -14,18 +14,17 @@ var image = document.getElementById('croppa'); var cropper = new Cropper(image, { - aspectRatio: 1 / 1, - viewMode: 1, - preview: '.crop-preview', - crop: function(e) { - $( 'x1' ).value = e.detail.x; - $( 'y1' ).value = e.detail.y; - $( 'x2' ).value = e.detail.x + e.detail.width; - $( 'y2' ).value = e.detail.y + e.detail.height; - $( 'width' ).value = e.detail.scaleX; - $( 'height' ).value = e.detail.scaleY; - - } + aspectRatio: 1 / 1, + viewMode: 1, + preview: '#profile-photo-wrapper, .crop-preview', + crop: function(e) { + $( '#x1' ).val(e.detail.x); + $( '#y1' ).val(e.detail.y); + $( '#x2' ).val(e.detail.x + e.detail.width); + $( '#y2' ).val(e.detail.y + e.detail.height); + $( '#width' ).val(e.detail.scaleX); + $( '#height' ).val(e.detail.scaleY); + } }); </script> diff --git a/view/tpl/cropcover.tpl b/view/tpl/cropcover.tpl index 8888a967a..ba91a2cce 100755 --- a/view/tpl/cropcover.tpl +++ b/view/tpl/cropcover.tpl @@ -13,18 +13,17 @@ var image = document.getElementById('croppa'); var cropper = new Cropper(image, { - aspectRatio: 2.75 / 1, - viewMode: 1, - preview: '.crop-preview', - crop: function(e) { - $( 'x1' ).value = e.detail.x; - $( 'y1' ).value = e.detail.y; - $( 'x2' ).value = e.detail.x + e.detail.width; - $( 'y2' ).value = e.detail.y + e.detail.height; - $( 'width' ).value = e.detail.scaleX; - $( 'height' ).value = e.detail.scaleY; - - } + aspectRatio: 2.75 / 1, + viewMode: 1, + preview: '.crop-preview', + crop: function(e) { + $( '#x1' ).val(e.detail.x); + $( '#y1' ).val(e.detail.y); + $( '#x2' ).val(e.detail.x + e.detail.width); + $( '#y2' ).val(e.detail.y + e.detail.height); + $( '#width' ).val(e.detail.scaleX); + $( '#height' ).val(e.detail.scaleY); + } }); </script> diff --git a/view/tpl/new_channel.tpl b/view/tpl/new_channel.tpl index c4837064f..f415e4e2c 100755 --- a/view/tpl/new_channel.tpl +++ b/view/tpl/new_channel.tpl @@ -24,7 +24,9 @@ {{include file="field_input.tpl" field=$nickname}} <div id="nick-spinner" class="spinner-wrapper"><div class="spinner m"></div></div> - <button class="btn btn-primary" type="submit" name="submit" id="newchannel-submit-button" value="{{$submit}}">{{$submit}}</button> + <button class="btn btn-secondary" name="validate" id="newchannel-validate-button" value="{{$validate}}" onclick="validate_channel(); return false;">{{$validate}}</button> + + <button class="btn btn-primary" type="submit" name="submit" id="newchannel-submit-button" value="{{$submit}}" >{{$submit}}</button> <div id="newchannel-submit-end" class="clear"></div> <div id="newchannel-import-link" class="descriptive-paragraph" >{{$label_import}}</div> diff --git a/view/tpl/settings_display.tpl b/view/tpl/settings_display.tpl index d1e6e0609..b0751eb5f 100755 --- a/view/tpl/settings_display.tpl +++ b/view/tpl/settings_display.tpl @@ -6,7 +6,7 @@ <input type='hidden' name='form_security_token' value='{{$form_security_token}}'> <div class="panel-group" id="settings" role="tablist" aria-multiselectable="true"> - {{if $theme || $mobile_theme}} + {{if $theme}} <div class="panel"> <div class="section-subtitle-wrapper" role="tab" id="theme-settings-title"> <h3> @@ -23,9 +23,6 @@ {{if $schema}} {{include file="field_select.tpl" field=$schema}} {{/if}} - {{if $mobile_theme}} - {{include file="field_themeselect.tpl" field=$mobile_theme}} - {{/if}} <div class="settings-submit-wrapper" > <button type="submit" name="submit" class="btn btn-primary">{{$submit}}</button> </div> @@ -41,7 +38,7 @@ </a> </h3> </div> - <div id="custom-settings-content" class="collapse{{if !$theme && !$mobile_theme}} in{{/if}}" role="tabpanel" aria-labelledby="custom-settings"> + <div id="custom-settings-content" class="collapse{{if !$theme}} in{{/if}}" role="tabpanel" aria-labelledby="custom-settings"> <div class="section-content-tools-wrapper"> {{if $theme_config}} {{$theme_config}} @@ -57,7 +54,7 @@ </a> </h3> </div> - <div id="content-settings-content" class="collapse{{if !$theme && !$mobile_theme && !$theme_config}} in{{/if}}" role="tabpanel" aria-labelledby="content-settings"> + <div id="content-settings-content" class="collapse{{if !$theme && !$theme_config}} in{{/if}}" role="tabpanel" aria-labelledby="content-settings"> <div class="section-content-wrapper"> {{include file="field_input.tpl" field=$ajaxint}} {{include file="field_input.tpl" field=$itemspage}} |