示例#1
0
function verificaConexao()
{
    $sHost = '127.0.0.1';
    $sPort = '5432';
    $sDbName = 'BancoExercicioPHP';
    $sUser = '******';
    $sPassword = '******';
    $sConexao = "host={$sHost}\n             port={$sPort}\n             dbname={$sDbName}\n             user={$sUser}\n             password={$sPassword}";
    try {
        $oConexao = pg_connect($sConexao);
    } catch (Exception $ex) {
        echo 'Exceзгo Lancada na conexao';
        echo 'Ultimo erro' . last_error($oConexao);
    }
}
示例#2
0
function import_account(&$a, $file)
{
    logger("Start user import from " . $file['tmp_name']);
    /*
     STEPS
     1. checks
     2. replace old baseurl with new baseurl
     3. import data (look at user id and contacts id)
     4. archive non-dfrn contacts
     5. send message to dfrn contacts
    */
    $account = json_decode(file_get_contents($file['tmp_name']), true);
    if ($account === null) {
        notice(t("Error decoding account file"));
        return;
    }
    if (!x($account, 'version')) {
        notice(t("Error! No version data in file! This is not a Friendica account file?"));
        return;
    }
    /*
    // this is not required as we remove columns in json not in current db schema
    if ($account['schema'] != DB_UPDATE_VERSION) {
    	notice(t("Error! I can't import this file: DB schema version is not compatible."));
    	return;
    }
    */
    // check for username
    $r = q("SELECT uid FROM user WHERE nickname='%s'", $account['user']['nickname']);
    if ($r === false) {
        logger("uimport:check nickname : ERROR : " . last_error(), LOGGER_NORMAL);
        notice(t('Error! Cannot check nickname'));
        return;
    }
    if (count($r) > 0) {
        notice(sprintf(t("User '%s' already exists on this server!"), $account['user']['nickname']));
        return;
    }
    // check if username matches deleted account
    $r = q("SELECT id FROM userd WHERE username='******'", $account['user']['nickname']);
    if ($r === false) {
        logger("uimport:check nickname : ERROR : " . last_error(), LOGGER_NORMAL);
        notice(t('Error! Cannot check nickname'));
        return;
    }
    if (count($r) > 0) {
        notice(sprintf(t("User '%s' already exists on this server!"), $account['user']['nickname']));
        return;
    }
    $oldbaseurl = $account['baseurl'];
    $newbaseurl = $a->get_baseurl();
    $olduid = $account['user']['uid'];
    unset($account['user']['uid']);
    unset($account['user']['account_expired']);
    unset($account['user']['account_expires_on']);
    unset($account['user']['expire_notification_sent']);
    foreach ($account['user'] as $k => &$v) {
        $v = str_replace($oldbaseurl, $newbaseurl, $v);
    }
    // import user
    $r = db_import_assoc('user', $account['user']);
    if ($r === false) {
        //echo "<pre>"; var_dump($r, $query, mysql_error()); killme();
        logger("uimport:insert user : ERROR : " . last_error(), LOGGER_NORMAL);
        notice(t("User creation error"));
        return;
    }
    $newuid = last_insert_id();
    //~ $newuid = 1;
    foreach ($account['profile'] as &$profile) {
        foreach ($profile as $k => &$v) {
            $v = str_replace($oldbaseurl, $newbaseurl, $v);
            foreach (array("profile", "avatar") as $k) {
                $v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v);
            }
        }
        $profile['uid'] = $newuid;
        $r = db_import_assoc('profile', $profile);
        if ($r === false) {
            logger("uimport:insert profile " . $profile['profile-name'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
            info(t("User profile creation error"));
            import_cleanup($newuid);
            return;
        }
    }
    $errorcount = 0;
    foreach ($account['contact'] as &$contact) {
        if ($contact['uid'] == $olduid && $contact['self'] == '1') {
            foreach ($contact as $k => &$v) {
                $v = str_replace($oldbaseurl, $newbaseurl, $v);
                foreach (array("profile", "avatar", "micro") as $k) {
                    $v = str_replace($oldbaseurl . "/photo/" . $k . "/" . $olduid . ".jpg", $newbaseurl . "/photo/" . $k . "/" . $newuid . ".jpg", $v);
                }
            }
        }
        if ($contact['uid'] == $olduid && $contact['self'] == '0') {
            // set contacts 'avatar-date' to "0000-00-00 00:00:00" to let poller to update urls
            $contact["avatar-date"] = "0000-00-00 00:00:00";
            switch ($contact['network']) {
                case NETWORK_DFRN:
                    //  send relocate message (below)
                    break;
                case NETWORK_ZOT:
                    // TODO handle zot network
                    break;
                case NETWORK_MAIL2:
                    // TODO ?
                    break;
                case NETWORK_FEED:
                case NETWORK_MAIL:
                    // Nothing to do
                    break;
                default:
                    // archive other contacts
                    $contact['archive'] = "1";
            }
        }
        $contact['uid'] = $newuid;
        $r = db_import_assoc('contact', $contact);
        if ($r === false) {
            logger("uimport:insert contact " . $contact['nick'] . "," . $contact['network'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
            $errorcount++;
        } else {
            $contact['newid'] = last_insert_id();
        }
    }
    if ($errorcount > 0) {
        notice(sprintf(tt("%d contact not imported", "%d contacts not imported", $errorcount), $errorcount));
    }
    foreach ($account['group'] as &$group) {
        $group['uid'] = $newuid;
        $r = db_import_assoc('group', $group);
        if ($r === false) {
            logger("uimport:insert group " . $group['name'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
        } else {
            $group['newid'] = last_insert_id();
        }
    }
    foreach ($account['group_member'] as &$group_member) {
        $group_member['uid'] = $newuid;
        $import = 0;
        foreach ($account['group'] as $group) {
            if ($group['id'] == $group_member['gid'] && isset($group['newid'])) {
                $group_member['gid'] = $group['newid'];
                $import++;
                break;
            }
        }
        foreach ($account['contact'] as $contact) {
            if ($contact['id'] == $group_member['contact-id'] && isset($contact['newid'])) {
                $group_member['contact-id'] = $contact['newid'];
                $import++;
                break;
            }
        }
        if ($import == 2) {
            $r = db_import_assoc('group_member', $group_member);
            if ($r === false) {
                logger("uimport:insert group member " . $group_member['id'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
            }
        }
    }
    foreach ($account['photo'] as &$photo) {
        $photo['uid'] = $newuid;
        $photo['data'] = hex2bin($photo['data']);
        $p = new Photo($photo['data'], $photo['type']);
        $r = $p->store($photo['uid'], $photo['contact-id'], $photo['resource-id'], $photo['filename'], $photo['album'], $photo['scale'], $photo['profile'], $photo['allow_cid'], $photo['allow_gid'], $photo['deny_cid'], $photo['deny_gid']);
        if ($r === false) {
            logger("uimport:insert photo " . $photo['resource-id'] . "," . $photo['scale'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
        }
    }
    foreach ($account['pconfig'] as &$pconfig) {
        $pconfig['uid'] = $newuid;
        $r = db_import_assoc('pconfig', $pconfig);
        if ($r === false) {
            logger("uimport:insert pconfig " . $pconfig['id'] . " : ERROR : " . last_error(), LOGGER_NORMAL);
        }
    }
    // send relocate messages
    proc_run('php', 'include/notifier.php', 'relocate', $newuid);
    info(t("Done. You can now login with your username and password"));
    goaway($a->get_baseurl() . "/login");
}