예제 #1
0
 static function pagePastLink($page, $data)
 {
     $me = new FutureLink_MetadataAssembler($page);
     $me->raw = new FutureLink_Metadata();
     $me->raw->websiteTitle = $me->websiteTitle;
     $me->raw->websiteSubtitle = $me->page;
     $me->raw->moderator = $me->moderatorName();
     $me->raw->moderatorInstitution = $me->moderatorBusinessName();
     $me->raw->moderatorProfession = $me->moderatorProfession();
     $me->raw->hash = hash_hmac("md5", JisonParser_Phraser_Handler::superSanitize($me->raw->author . $me->raw->authorInstitution . $me->raw->authorProfession), JisonParser_Phraser_Handler::superSanitize($data));
     $me->raw->author = $me->authorName();
     $me->raw->authorInstitution = $me->authorBusinessName();
     $me->raw->authorProfession = $me->authorProfession();
     $me->raw->href = $me->href;
     $me->raw->answers = $me->answers();
     $me->raw->dateLastUpdated = $me->lastModif;
     $me->raw->dateOriginated = $me->findDatePageOriginated();
     $me->raw->language = $me->language();
     $me->raw->count = $me->countAll();
     $me->raw->keywords = $me->keywords();
     $me->raw->categories = $me->categories();
     $me->raw->scientificField = $me->scientificField();
     $me->raw->minimumMathNeeded = $me->minimumMathNeeded();
     $me->raw->minimumStatisticsNeeded = $me->minimumStatisticsNeeded();
     $me->raw->text = $data;
     return $me;
 }
예제 #2
0
 static function pageTextLink($page, $data)
 {
     $me = new self($page);
     $me->raw = array('websiteTitle' => $me->websiteTitle, 'websiteSubtitle' => $me->page, 'moderator' => $me->moderatorName(), 'moderatorInstitution' => $me->moderatorBusinessName(), 'moderatorProfession' => $me->moderatorProfession(), 'hash' => '', 'author' => $me->authorName(), 'authorInstitution' => $me->authorBusinessName(), 'authorProfession' => $me->authorProfession(), "href" => $me->href, 'answers' => $me->answers(), 'dateLastUpdated' => $me->lastModif, 'dateOriginated' => $me->findDatePageOriginated(), 'language' => $me->language(), 'count' => $me->countAll(), 'keywords' => $me->keywords(), 'categories' => $me->categories(), 'scientificField' => $me->scientificField(), 'minimumMathNeeded' => $me->minimumMathNeeded(), 'minimumStatisticsNeeded' => $me->minimumStatisticsNeeded(), 'text' => $data);
     $me->raw['hash'] = hash_hmac("md5", JisonParser_Phraser_Handler::superSanitize($me->raw['author'] . $me->raw['authorInstitution'] . $me->raw['authorProfession']), JisonParser_Phraser_Handler::superSanitize($data));
     return $me;
 }
예제 #3
0
 static function restoreTextLinkPhrasesInWikiPage($items, $phrase = "")
 {
     global $tikilib, $headerlib, $smarty;
     $phrase = JisonParser_Phraser_Handler::superSanitize($phrase);
     $phrases = array();
     $phraseMatchIndex = -1;
     $parsed = $smarty->getTemplateVars('parsed');
     if (empty($parsed)) {
         $parsed = $smarty->getTemplateVars('previewd');
     }
     foreach ($items as &$item) {
         if (!empty($item->forwardlink->href)) {
             if (JisonParser_Phraser_Handler::hasPhrase($parsed, $item->textlink->text) != true) {
                 continue;
             }
             $phrases[] = $item->textlink->text;
             $i = count($phrases) - 1;
             if (JisonParser_Phraser_Handler::superSanitize($phrase) == JisonParser_Phraser_Handler::superSanitize($item->textlink->text)) {
                 $phraseMatchIndex = $i;
             }
             $item->forwardlink->dateLastUpdated = $tikilib->get_short_datetime($item->forwardlink->dateLastUpdated);
             $item->forwardlink->dateOriginated = $tikilib->get_short_datetime($item->forwardlink->dateOriginated);
             $item->textlink->dateLastUpdated = $tikilib->get_short_datetime($item->textlink->dateLastUpdated);
             $item->textlink->dateOriginated = $tikilib->get_short_datetime($item->textlink->dateOriginated);
             $headerlib->add_jq_onready("var phrase = \$('span.textlinkMiddle" . $i . "')\n\t\t\t\t\t\t.addClass('ui-state-highlight');\n\n\t\t\t\t\tvar phraseLink = \$('<a><sup>&</sup></a>')\n\t\t\t\t\t\t.data('metadataHere', " . json_encode($item->textlink) . ")\n\t\t\t\t\t\t.data('metadataThere', " . json_encode($item->forwardlink) . ")\n\t\t\t\t\t\t.addClass('textlinkA')\n\t\t\t\t\t\t.insertAfter(phrase.last());");
         }
     }
     $phraser = new JisonParser_Phraser_Handler();
     $phraser->setCssWordClasses(array('start' => 'textlinkStart', 'middle' => 'textlinkMiddle', 'end' => 'textlinkEnd'));
     if ($phraseMatchIndex > -1) {
         $headerlib->add_jq_onready("var selection = \$('span.textlinkStart" . $phraseMatchIndex . ",span.textlinkEnd" . $phraseMatchIndex . "').realHighlight();\n\n\t\t\t\t\$('body,html').animate({\n\t\t\t\t\tscrollTop: selection.first().offset().top - 10\n\t\t\t\t});");
     }
     self::restorePhrasesInWikiPage($phraser, $phrases);
 }
예제 #4
0
 function appendToContents(&$contents, $item)
 {
     global $prefs, $_REQUEST;
     if ($this->debug == true) {
         ini_set('error_reporting', E_ALL);
         ini_set('display_errors', 1);
     }
     $this->itemsAdded = false;
     foreach ($item->feed->entry as $i => $newEntry) {
         $this->verifications[$i] = array();
         $this->verifications[$i]["reason"] = array();
         //lets remove the new entry if it has already been accepted in the past
         foreach ($contents->entry as &$existingEntry) {
             if ($existingEntry->textlink->text == $newEntry->textlink->text && $existingEntry->textlink->href == $newEntry->textlink->href) {
                 $this->verifications[$i]['reason'][] = 'exists';
                 unset($item->feed->entry[$i]);
             }
         }
         $revision = Feed_ForwardLink_Search::findWikiRevision($newEntry->forwardlink->text);
         $this->verifications[$i]["hashBy"] = JisonParser_Phraser_Handler::superSanitize($newEntry->forwardlink->author . $newEntry->forwardlink->authorInstitution . $newEntry->forwardlink->authorProfession);
         $this->verifications[$i]['foundRevision'] = $revision;
         $this->verifications[$i]["metadataHere"] = $this->metadata->raw;
         $this->verifications[$i]["phraseThere"] = JisonParser_Phraser_Handler::superSanitize($newEntry->forwardlink->text);
         $this->verifications[$i]["hashHere"] = hash_hmac("md5", $this->verifications[$i]["hashBy"], $this->verifications[$i]["phraseThere"]);
         $this->verifications[$i]["hashThere"] = $newEntry->forwardlink->hash;
         $this->verifications[$i]['exists'] = JisonParser_Phraser_Handler::hasPhrase($revision['data'], $this->verifications[$i]["phraseThere"]);
         if ($this->verifications[$i]['hashHere'] != $this->verifications[$i]['hashThere']) {
             $this->verifications[$i]['reason'][] = 'hash_tampering';
             unset($item->feed->entry[$i]);
         }
         if ($newEntry->forwardlink->websiteTitle != $prefs['browsertitle']) {
             $this->verifications[$i]['reason'][] = 'title';
             unset($item->feed->entry[$i]);
         }
         if ($this->verifications[$i]['exists'] == false) {
             if (empty($this->verifications[$i]['reason'])) {
                 $this->verifications[$i]['reason'][] = 'no_existence_hash_pass';
             } else {
                 $this->verifications[$i]['reason'][] = 'no_existence';
             }
             unset($item->feed->entry[$i]);
         }
         foreach ($newEntry->forwardlink as $key => $value) {
             if (isset(Feed_ForwardLink_Metadata::$acceptableKeys[$key]) && Feed_ForwardLink_Metadata::$acceptableKeys[$key] == true) {
                 //all clear
             } else {
                 $this->verifications[$i]['reason'][] = 'metadata_tampering' . ($this->debug == true ? $key : '');
                 unset($item->feed->entry[$i]);
             }
         }
         foreach ($newEntry->textlink as $key => $value) {
             if (isset(Feed_ForwardLink_Metadata::$acceptableKeys[$key]) && Feed_ForwardLink_Metadata::$acceptableKeys[$key] == true) {
                 //all clear
             } else {
                 $this->verifications[$i]['reason'][] = 'metadata_tampering' . ($this->debug == true ? $key : '');
                 unset($item->feed->entry[$i]);
             }
         }
     }
     if (empty($item->feed->entry) == false) {
         $this->itemsAdded = true;
         foreach ($item->feed->entry as &$entry) {
             Tracker_Query::tracker('Wiki Attributes')->byName()->replaceItem(array('Page' => $this->page, 'Attribute' => '', 'Value' => $entry->forwardlink->text, 'Type' => 'ForwardLink Accepted'));
         }
         if (empty($contents->entry) == true) {
             $contents->entry = array();
         }
         $contents->entry = array_merge($contents->entry, $item->feed->entry);
     }
 }