public function createDuplicates($newPageId, $oldPageId) { //unset($pageIdsToDelete[$pageIdToUpdate]); $data = $this->connection->fetchAll("SELECT * FROM [:vd:pages_files] WHERE [page_id]=%i", $oldPageId); if ($data) { $inserts = array(); foreach ($data as $insert) { $insert->toArray(); $insert['page_id'] = $newPageId; $inserts[] = $insert; } $this->connection->query("INSERT INTO [:vd:pages_files] %ex", $inserts); } // $this->connection->query("DELETE FROM [:vd:pages_files] WHERE [page_id] IN %l",(array) $pageIdsToDelete); return true; }
/** * @param \obo\Carriers\EntityInformationCarrier $entityInformation * @return array */ protected function createInformationForEntity(\obo\Carriers\EntityInformationCarrier $entityInformation) { $information = ["table" => $entityInformation->repositoryName, "columns" => [], "autoIncrementProperty" => null, "toPropertyName" => [], "toColumnName" => []]; foreach ($this->dibiConnection->fetchAll("SHOW COLUMNS FROM [{$information["table"]}];") as $row) { $information["columns"][$row->Field] = ["field" => $row->Field, "type" => $type = preg_replace("#[^a-z]+.*\$#", '', $row->Type), "placeholder" => $this->placeholderForColumnType($type), "null" => $row->Null, "key" => $row->Key, "default" => $row->Default, "extra" => $row->Extra]; } foreach ($entityInformation->persistablePropertiesNames as $persitablePropertyName) { $propertyInformation = $entityInformation->informationForPropertyWithName($persitablePropertyName); if (!isset($information["columns"][$propertyInformation->columnName])) { throw new \obo\Exceptions\Exception("Column '{$propertyInformation->columnName}' does not exist for persistable property '{$persitablePropertyName}' in table '{$information["table"]}'"); } $information["columns"][$propertyInformation->columnName]["propertyName"] = $propertyInformation->name; $information["columns"][$propertyInformation->columnName]["nullable"] = $propertyInformation->nullable; if ($information["columns"][$propertyInformation->columnName]["autoIncrement"] = $propertyInformation->autoIncrement) { $information["autoIncrementProperty"] = $persitablePropertyName; } $information["columns"][$propertyInformation->columnName]["exportFilter"] = $this->dataConverter->convertFilterForCombinationCode("D" . $information["columns"][$propertyInformation->columnName]["type"] . "->O" . $propertyInformation->dataType->name()); $information["columns"][$propertyInformation->columnName]["importFilter"] = $this->dataConverter->convertFilterForCombinationCode("O" . $propertyInformation->dataType->name() . "->D" . $information["columns"][$propertyInformation->columnName]["type"]); $information["toPropertyName"][$propertyInformation->columnName] = $propertyInformation->name; $information["toColumnName"][$propertyInformation->name] = $propertyInformation->columnName; } return $this->informations[$entityInformation->className] = $information; }
<?php require_once 'vendor/autoload.php'; require_once 'config.php'; require_once 'libs/WikinewsReport.php'; use Dibi\Dibi; $db = new DibiConnection($database_configuration); $language = isset($_GET['lang']) ? $_GET['lang'] : ''; $rows = $db->fetchAll('SELECT url FROM Texts WHERE language="' . $language . '"'); $publishedUrls = array(); foreach ($rows as $row) { array_push($publishedUrls, $row['url']); } switch ($language) { case "en": $reports = simplexml_load_file("https://en.wikinews.org/wiki/Special:NewsFeed"); foreach ($reports->url as $report_url) { $link = $report_url->loc; $report = new WikinewsReport($link, $publishedUrls); $extracted_report = $report->getTitleTextLevel(); if (!$extracted_report['published']) { $db->query("INSERT INTO Texts (language,title,text,level,source,url,public) VALUES ('" . $language . "','" . $extracted_report['title'] . "','" . $extracted_report['text'] . "','" . $extracted_report['level'] . "','Wikinews','" . $link . "','1')"); } } break; case "de": $reports = simplexml_load_file("https://de.wikinews.org/w/api.php?format=xml&action=query&prop=extracts&exchars=99999999&explaintext&exsectionformat=wiki&titles=Kategorie:Ver%C3%B6ffentlicht"); $titles = $reports->query->pages->page->extract; $titles = trim($titles, " \n\t\r\v…"); $links = preg_split("/[\n\r]+/", $titles); foreach ($links as &$link) {