Exemplo n.º 1
0
Arquivo: DSMW.php Projeto: hala54/DSMW
function uploadComplete($image)
{
    global $wgServerName, $wgScriptPath, $wgServer, $wgVersion;
    $urlServer = 'http://' . $wgServerName . $wgScriptPath;
    //$classe = get_class($image);
    if (compareMWVersion($wgVersion, '1.16.0') == -1) {
        $localfile = $image->mLocalFile;
    } else {
        $localfile = $image->getLocalFile();
    }
    $path = utils::prepareString($localfile->mime, $localfile->size, $wgServer . $localfile->url);
    if (!file_exists($path)) {
        $dbr = wfGetDB(DB_SLAVE);
        $lastRevision = Revision::loadFromTitle($dbr, $localfile->getTitle());
        if ($lastRevision->getPrevious() == null) {
            $rev_id = 0;
        } else {
            $rev_id = $lastRevision->getPrevious()->getId();
        }
        $revID = $lastRevision->getId();
        $model = manager::loadModel($rev_id);
        $patch = new Patch(false, true, null, $urlServer, $rev_id, null, null, null, $localfile->mime, $localfile->size, $localfile->url, null);
        $patch->storePage($localfile->getTitle(), $revID);
        //stores the patch in a wikipage
        manager::storeModel($revID, $sessionId = session_id(), $model, $blobCB = 0);
    }
    return true;
}
Exemplo n.º 2
0
/**
 *Integrates for attachment
 *
 * @param <String> $article
 */
function logootIntegrateAtt($article, $edit)
{
    $dbr = wfGetDB(DB_SLAVE);
    $dbr->immediateBegin();
    $title = Title::newFromText($article);
    $lastRevision = Revision::loadFromTitle($dbr, $title);
    if ($lastRevision->getPrevious() == null) {
        $rev_id = 0;
    } else {
        $rev_id = $lastRevision->getPrevious()->getId();
    }
    $revID = $lastRevision->getId();
    $model = manager::loadModel($rev_id);
    manager::storeModel($revID, $sessionId = session_id(), $model, $blobCB = 0);
    if ($edit) {
        $article = new Article($title);
        $status = $article->doEdit($model->getText(), $summary = "");
    }
    return $revID;
}
Exemplo n.º 3
0
 function run()
 {
     global $wgServerName, $wgScriptPath, $wgServer, $wgScriptExtension;
     $urlServer = 'http://' . $wgServerName;
     wfProfileIn('DSMWUpdateJob::run()');
     $revids = array();
     $revids1 = array();
     $page_ids = array();
     //Getting all the revision ids of pages having been logootized
     $db = wfGetDB(DB_SLAVE);
     $model_table = $db->tableName('model');
     $sql = "SELECT `rev_id` FROM {$model_table}";
     $res = $db->query($sql);
     while ($row = $db->fetchObject($res)) {
         $revids[] = $row->rev_id;
     }
     $db->freeResult($res);
     //if (count($revids)==0) $revids=array();
     //Getting all the revision ids without the pages in the DSMW namespaces and
     //Administration_pull_site_addition and Administration_pull_site_addition pages
     $rev_table = $db->tableName('revision');
     $page_table = $db->tableName('page');
     $sql = "SELECT {$rev_table}.`rev_id` FROM {$rev_table}, {$page_table} WHERE\n     `rev_page`=`page_id` and `page_namespace`!= 110 and `page_namespace`!= 200\n        and `page_namespace`!= 210 and `page_namespace`!= 220 \nand `page_title`!= \"Administration_pull_site_addition\"\nand `page_title` != \"Administration_push_site_addition\"";
     $res1 = $db->query($sql);
     while ($row = $db->fetchObject($res1)) {
         $revids1[] = $row->rev_id;
     }
     $db->freeResult($res1);
     //if (count($revids1)==0) $revids1=array();
     //Array_diff returns an array containing all the entries from $revids1 that are
     //not present in $revids.
     $diff = array_diff($revids1, $revids);
     //get page ids of these revisions (each id must be unique in the array)
     foreach ($diff as $id) {
         $page_id = $db->selectField('revision', 'rev_page', array('rev_id' => $id));
         $page_ids[] = $page_id;
     }
     $page_ids = array_unique($page_ids);
     sort($page_ids);
     //Now we can logootize:
     if (count($page_ids) != 0) {
         foreach ($page_ids as $pageid) {
             $title = Title::newFromID($pageid);
             $ns = $title->getNamespace();
             $lastRev = Revision::loadFromPageId($db, $pageid);
             $pageText = $lastRev->getText();
             //load an empty model
             $model = manager::loadModel(0);
             $logoot = manager::getNewEngine($model, DSMWSiteId::getInstance()->getSiteId());
             // new logootEngine($model);
             $listOp = $logoot->generate("", $pageText);
             $modelAfterIntegrate = $logoot->getModel();
             $tmp = serialize($listOp);
             $patchid = sha1($tmp);
             if ($ns == NS_FILE || $ns == NS_IMAGE || $ns == NS_MEDIA) {
                 $apiUrl = $wgServer . $wgScriptPath . "/api" . $wgScriptExtension;
                 $onPage = str_replace(array(' '), array('%20'), $lastRev->getTitle()->getText());
                 $download = $apiUrl . "?action=query&titles=File:" . $onPage . "&prop=imageinfo&format=php&iiprop=mime|url|size";
                 $resp = Http::get($download);
                 $resp = unserialize($resp);
                 $a = $resp['query']['pages'];
                 $a = current($a);
                 $a = $a['imageinfo'];
                 $a = current($a);
                 $mime = $a['mime'];
                 $size = $a['size'];
                 $url = $a['url'];
                 $patch = new Patch(false, true, null, $urlServer . $wgScriptPath, 0, null, null, null, $mime, $size, $url, null);
                 $patch->storePage('File:' . $lastRev->getTitle()->getText(), $lastRev->getId());
             } else {
                 $patch = new Patch(false, false, $listOp, $urlServer, 0);
                 $patch->storePage($lastRev->getTitle()->getText(), $lastRev->getId());
             }
             manager::storeModel($lastRev->getId(), $sessionId = session_id(), $modelAfterIntegrate, $blobCB = 0);
         }
     }
     wfProfileOut('DSMWUpdateJob::run()');
     return true;
 }