ARC2_StoreDeleteQueryHandler::cleanTableReferences PHP Метод

cleanTableReferences() публичный Метод

*
    function cleanTableReferences()
    {
        /* lock */
        if (!$this->store->getLock()) {
            return $this->addError('Could not get lock in "cleanTableReferences"');
        }
        $con = $this->store->getDBCon();
        $tbl_prefix = $this->store->getTablePrefix();
        $dbv = $this->store->getDBVersion();
        /* check for unconnected triples */
        $sql = '
      SELECT T.t FROM ' . $tbl_prefix . 'triple T LEFT JOIN ' . $tbl_prefix . 'g2t G ON ( G.t = T.t )
      WHERE G.t IS NULL LIMIT 1
    ';
        if (($rs = mysqli_query($con, $sql)) && mysqli_num_rows($rs)) {
            /* delete unconnected triples */
            $sql = $dbv < '04-01' ? 'DELETE ' . $tbl_prefix . 'triple' : 'DELETE T';
            $sql .= '
        FROM ' . $tbl_prefix . 'triple T 
        LEFT JOIN ' . $tbl_prefix . 'g2t G ON (G.t = T.t)
        WHERE G.t IS NULL
      ';
            mysqli_query($con, $sql);
        }
        /* check for unconnected graph refs */
        if (rand(1, 10) == 1) {
            $sql = '
        SELECT G.g FROM ' . $tbl_prefix . 'g2t G LEFT JOIN ' . $tbl_prefix . 'triple T ON ( T.t = G.t )
        WHERE T.t IS NULL LIMIT 1
      ';
            if (($rs = mysqli_query($con, $sql)) && mysqli_num_rows($rs)) {
                /* delete unconnected graph refs */
                $sql = $dbv < '04-01' ? 'DELETE ' . $tbl_prefix . 'g2t' : 'DELETE G';
                $sql .= '
          FROM ' . $tbl_prefix . 'g2t G 
          LEFT JOIN ' . $tbl_prefix . 'triple T ON (T.t = G.t)
          WHERE T.t IS NULL
        ';
                mysqli_query($con, $sql);
            }
        }
        /* release lock */
        $this->store->releaseLock();
    }