aboutsummarylogtreecommitdiffstats
path: root/internal_backlinks.pas
blob: 29c8619a8ce60392011b681142501e8b577a665d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
{ Модуль для создания списка обратных ссылок на страницу }
unit internal_backlinks;

{$mode ObjFPC}{$H+}

interface

uses

Classes, SysUtils, DB, BufDataset, Forms, Controls, Graphics, Dialogs,
 DBCtrls,   SQLite3Conn, SQLDB, process, StdCtrls, ExtCtrls, ComCtrls, Menus, DBGrids,
 db_helpers, types_for_app;

{ Выполняет запросы к сайту, чтобы получить список обратных ссылок }
function  getBacklinks(var konnect : TSQLite3Connection;
  var tranzact : TSQLTransaction;
  var sQ: TSQLQuery) : TStringToArrayOfStrings;

function makeBacklinkHtml(var map_of_backlinks : TStringToArrayOfStrings; page_id : String) : String;


implementation

function getBacklinks(var konnect: TSQLite3Connection;
  var tranzact: TSQLTransaction;
  var sQ: TSQLQuery): TStringToArrayOfStrings;
var
  R : TStringToArrayOfStrings;
  InitialArr : TMyArrayOfStrings;
  I   : Integer;
  Key :  String;
  Values : TMyArrayOfStrings;
  S : TStringList;
begin
     S := TStringList.Create;
     R:=TStringToArrayOfStrings.Create;
     Sq.SQL.Text:='SELECT id FROM content';
     Sq.Active:=True;
     sQ.First;
     while not sQ.EOF do
           begin
             SetLength(InitialArr, 0);
             R.AddOrSetData( sQ.FieldByName('id').AsString, InitialArr);
             sQ.Next;
           end;

    For I := 0 to R.Count - 1 do
    begin
        Key := R.Keys[I];
        Values := R.Data[I];
        Sq.Active:=False;
        sq.SQL.Text:='SELECT id FROM content WHERE content LIKE "%'+Key+'%" ';
        sq.Active:=True;
        sQ.First;
        S.Clear;
        while not sQ.EOF do
           begin
             SetLength(Values, Length(Values) + 1);
             Values[ Length(Values) - 1 ] := sQ.FieldByName('id').AsString;

              R.AddOrSetData(Key, Values);

             S.Add(  Values[ Length(Values) - 1 ] );
             sQ.Next;
             Application.ProcessMessages;
           end;

             // S.SaveToFile(sQ.FieldByName('id').AsString+'.log');

    end;
    sq.Active:=False;
    S.Free;
    Result := R;



end;

function makeBacklinkHtml(var map_of_backlinks : TStringToArrayOfStrings;
  page_id: String): String;
var

  S : String;
  Backlinks : TMyArrayOfStrings;
  I : Integer;
begin
   if map_of_backlinks.TryGetData(page_id, Backlinks) then
    begin
      s := '<ul>';
      for i := 0 to High(Backlinks) do begin
        // used [page_id] shortcode
         s := s + '<li>' + '[' + Backlinks[i] + ']' + '</li>';
         Application.ProcessMessages;
      end;
      s := s + '</ul>';
    end
    else
        s := 'no backlinks';
   Result := s;
end;

end.