HtmlBuilder
/
internal_backlinks.pas
102 строки · 2.6 Кб
1{ Модуль для создания списка обратных ссылок на страницу }
2unit internal_backlinks;3
4{$mode ObjFPC}{$H+}5
6interface
7
8uses
9
10Classes, SysUtils, DB, BufDataset, Forms, Controls, Graphics, Dialogs,11DBCtrls, SQLite3Conn, SQLDB, process, StdCtrls, ExtCtrls, ComCtrls, Menus, DBGrids,12db_helpers, types_for_app;13
14{ Выполняет запросы к сайту, чтобы получить список обратных ссылок }
15function getBacklinks(var konnect : TSQLite3Connection;16var tranzact : TSQLTransaction;17var sQ: TSQLQuery) : TStringToArrayOfStrings;18
19function makeBacklinkHtml(var map_of_backlinks : TStringToArrayOfStrings; page_id : String) : String;20
21
22implementation
23
24function getBacklinks(var konnect: TSQLite3Connection;25var tranzact: TSQLTransaction;26var sQ: TSQLQuery): TStringToArrayOfStrings;27var
28R : TStringToArrayOfStrings;29InitialArr : TMyArrayOfStrings;30I : Integer;31Key : String;32Values : TMyArrayOfStrings;33S : TStringList;34begin
35S := TStringList.Create;36R:=TStringToArrayOfStrings.Create;37Sq.SQL.Text:='SELECT id FROM content';38Sq.Active:=True;39sQ.First;40while not sQ.EOF do41begin42SetLength(InitialArr, 0);43R.AddOrSetData( sQ.FieldByName('id').AsString, InitialArr);44sQ.Next;45end;46
47For I := 0 to R.Count - 1 do48begin49Key := R.Keys[I];50Values := R.Data[I];51Sq.Active:=False;52sq.SQL.Text:='SELECT id FROM content WHERE content LIKE "%'+Key+'%" ';53sq.Active:=True;54sQ.First;55S.Clear;56while not sQ.EOF do57begin58SetLength(Values, Length(Values) + 1);59Values[ Length(Values) - 1 ] := sQ.FieldByName('id').AsString;60
61R.AddOrSetData(Key, Values);62
63S.Add( Values[ Length(Values) - 1 ] );64sQ.Next;65Application.ProcessMessages;66end;67
68// S.SaveToFile(sQ.FieldByName('id').AsString+'.log');69
70end;71sq.Active:=False;72S.Free;73Result := R;74
75
76
77end;78
79function makeBacklinkHtml(var map_of_backlinks : TStringToArrayOfStrings;80page_id: String): String;81var
82
83S : String;84Backlinks : TMyArrayOfStrings;85I : Integer;86begin
87if map_of_backlinks.TryGetData(page_id, Backlinks) then88begin89s := '<ul>';90for i := 0 to High(Backlinks) do begin91// used [page_id] shortcode92s := s + '<li>' + '[' + Backlinks[i] + ']' + '</li>';93Application.ProcessMessages;94end;95s := s + '</ul>';96end97else98s := 'no backlinks';99Result := s;100end;101
102end.103
104