To use this website completely, it is necessary to store cookies on your computer.
 

Block for Random Image from Coppermine Gallery ( CPG )

Started by ranseyer, 6 years ago

previous topic - next topic

0 Members and 0 Guests are viewing this topic.

ranseyer

6 years ago
Here it is.
It was made from a Member of our Board, so i can't answer your technical questions...

The configuration is done by the array. You have to define to directory of the images first. The second field is for the hyperlink of the image.
Some  lines are included multiple times, because this images should shown more often...

This script is based on a librarary from here: http://deruwe.de/vorschaubilder-einfach-mit-php-realisieren.html
You have to replace "/gallery/thumb/thumb.php" fitting to your server...

Have phun...
CU

Code Select
//
//  Picture Plugin for PortaMx
//
//  V.03 - added hyperlinks per directory
//
//  easyvdr.de team
//
/////////////////////////////////////////

// variable definition
///////////////////////
$size=160;
$sourceDirs=array(
  array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/uxxxn","http://www.xxx.de/gallery/index.php?cat=2"),
  array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/hxxxe", "http://www.xxx.de/gallery/index.php?cat=3"),
  array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/hxxxe", "http://www.xxx.de/gallery/index.php?cat=3"),
  array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/screenshots", "http://www.xxx.de/gallery/thumbnails.php?album=5"),
  array("/opt/www/vhosts/xxx/httpdocs/gallery/albums/hxxxe", "http://www.xxx.de/gallery/index.php?cat=3")
);

// Search source directory(s) for albums (=subdirs)
////////////////////////////////////////////////////
foreach($sourceDirs as $sourceDirArr) {
  $sourceDir=$sourceDirArr[0];
  !preg_Match("/\/$/",$sourceDir) && $sourceDir=$sourceDir."/";
  $DIR = openDir($sourceDir);

  // Search subdirs - but exclude '.'dirs & tmp folders
  ///////////////////////////////////////////////////
  while($child=readdir ($DIR)) {
    $dirname=$sourceDir.$child;
    if(is_dir($dirname) && !preg_match("/^\./",$child) && $child != "tmp"){   
//DEBUG      echo "$dirname\n<br>";
      $dirs[] = array($dirname, $sourceDirArr[1]);
    } else if(is_file($dirname) && !preg_match("/^thumb/i",$child) && preg_Match("/(jpg|gif|jpeg)$/i",$child)) {
      // Search pics - but exclude thumbnails
      ///////////////////////////////////////////////////
      $pics[]=array($dirname, $sourceDirArr[1]);
//DEBUG      echo "$dirname.$child<br>\n";
    }
  }
}
closedir($DIR);

// Now that we have all directories with albums in $dirs (dirs[0]=dir, dir[1]=weblink) - lets lookup Pictures
///////////////////////////////////////////////////////////////
foreach($dirs as $dirArr) {
  $dir=$dirArr[0];
  !preg_Match("/\/$/",$dir) && $dir=$dir."/";
//DEBUG  echo $dir."\n<br>";
 
  $DIR = openDir("$dir");
  while (($child = readDir($DIR))) {

    // Search pics - but exclude thumbnails
    ///////////////////////////////////////////////////
    if (!preg_match("/^thumb/i",$child) && preg_Match("/(jpg|gif|jpeg)$/i",$child)) {
      $pics[]=array($dir.$child, $dirArr[1]);
//DEBUG      echo "$dir.$child<br>\n";
    }
  }
}

// $pics is a large array of the pictures (pics[0]=pic, pics[1]=weblink) we found - inkl. directory path
//////////////////////////////////////////////////////////////////////////
$random = rand(0,count($pics)-1);

$picIntLink=$pics[$random][0];
$webLink=$pics[$random][1];
$docRoot="/".str_replace('/','\/', $_SERVER[ 'DOCUMENT_ROOT'])."/";
$picExtLink=preg_replace($docRoot, '', $pics[$random][0]);

echo "<a href='$webLink'><img src='http://".$_SERVER['SERVER_NAME']."/gallery/thumb/thumb.php?image=$picExtLink&size=$size&type=RESIZE'></a><br>";

Powerbob

#1
5 years ago
Does this work? Can anyone say what changes need to be made?

Cheers
Bob

My test Site;http://pplb.net/smf21/index.php
It's nice to be nice :)

ranseyer

#2
5 years ago
It works, an there is so need to change something. You need only ANY Gallery ore some directorys with images, und you must tell the skript where your pictures are. Thats it.

This has to be modified:
Quote$sourceDirs=array(
  array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/uxxxn","http://www.xxx.de/gallery/index.php?cat=2"),
  array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/hxxxe", "http://www.xxx.de/gallery/index.php?cat=3"),
  array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/hxxxe", "http://www.xxx.de/gallery/index.php?cat=3"),

kev

#3
5 years ago
Quote from: ranseyer ,  5 years ago
It works, an there is so need to change something. You need only ANY Gallery ore some directorys with images, und you must tell the skript where your pictures are. Thats it.

This has to be modified:
Quote$sourceDirs=array(
  array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/uxxxn","http://www.xxx.de/gallery/index.php?cat=2"),
  array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/hxxxe", "http://www.xxx.de/gallery/index.php?cat=3"),
  array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/hxxxe", "http://www.xxx.de/gallery/index.php?cat=3"),



Sorry i don't know what to edit to get this to work with SMF gallery anyone got this to work with SMF dont mind sharing please x

ranseyer

#4
5 years ago
You have to modyfy:

Path to your images:
/xxx/www/vhosts/xxx/httpdocs/gallery/albums/uxxxn (You need Images direct in this path)

Symlink:
http://www.xxx.de/gallery/index.php?cat=2 (This is a link to what you want. When you klick on the image, this link will be used)


If you have more than one directory you have to add more lines...

ranseyer

#5
a year ago
Nach Updates vom Portal (PortaMX) hagelt es diese Meldungen

Quote2: Invalid argument supplied for foreach()Filter hinzufügen: Nur Fehler von dieser Datei zeigen Datei: /opt/www/easy-vdr.de/httpdocs/forum/Themes/default/PortaMx/Frames.template.php (portamx_below sub template - eval?)
Zeile: 46

8: Undefined variable: dirsFilter hinzufügen: Nur Fehler von dieser Datei zeigen Datei: /opt/www/easy-vdr.de/httpdocs/forum/Themes/default/PortaMx/Frames.template.php (portamx_below sub template - eval?)
Zeile: 46


Ich würde mich über einen Tipp eines PHP kundigen freuen wie man die Fehler wegbekommt...

feline

#6
a year ago
Beide Variablen gibt es  in dem Template nicht.
Du solltest zunächst mal in SMF die Template emulation ausschalten.
Wenn das nicht hilft, kannst du mal diese Datei gepackt mit zip hier anhängen, dann schaue ich mal ...
Many are stubborn in relation to the path, a few in relation to the target.

ranseyer

#7
a year ago
Danke für den Hinweis.

Was ich kenne und auch wieder gefunden habe ist im Paketmanager die Emulation einer alten SMF Version. Hier ist der Standard eingetragen (SMF 2.0.11 was auch installiert ist)

Der Code ist oben komplett angehängt, und hier nochmals als ZIP.
Ich würde mich sehr über einen Hinweis freuen.

feline

#8
a year ago
Ich kann dir nicht genau sagen, wo der Fehler ist .. aber .. das der Fehler im Frame Template auftritt ist normal, da der code dort ausgeführt wird (jeder blockcode wird dort ausgeführt).

Zwei dinge sind mir aufgefallen ..
1. Im original code war der link mal index.php?cat=xyz, bei dir ist das index.php?/category/44, wobei ?/ schon mal falsch ist, es müsste index.php?category=44 sein.

2. Wenn SEF aktiviert ist, wird category=xyz als PortaMx Category request behandelt, ist SEF nicht aktiviert, wird cat=xyz als PortaMx Categorie request behandelt.

3. Ganz allgemein .. links in SMF (und PortaMx) müssen immer im format index.php?name=wert sein. Bei mehr als als einem wert index.php?name1=wert1;name2=wert2

Mehr kann ich dazu nicht sagen, da ich das auch nicht testen kann.

Ach so .. die Template evaluation kannst du unter Admin - Server settings - General - Disable evaluation of templates ausschalten .. Häkchen setzen
Many are stubborn in relation to the path, a few in relation to the target.

ranseyer

#9
a year ago
Hi,

Danke nochmal für den Input.

Was ich klarstellen sollte: Piwigo ist eine Gallerie und hat nichts mit SMF oder PMX zu tun. Das PHP Skript zeigt nur ein Bild rechts oben auf der Startseite an; http://www.easy-vdr.de/forum/index.php
(Daher habe ich angenommen (und nehme weiter an), hier gilt nicht die SMF Syntax, denn es soll ja um einen Link auf die Gallerie gehen, wenn man ein Bild anklickt wird stumpf der Link ausgeführt, und wenn der Link passt sieht man nicht nur die Startseite der Gallerie, sonder das gewünschte.

In den letzten Tage gab es fast eine Million Fehlermneldungen. Evaluation der Templates habe ich abgeschaltet, bekomme aber auch massig solche Fehler;

QuoteChronologische Reihenfolge der Liste ändern Heute um 19:47:31
Filter hinzufügen: Nur Fehlermeldungen dieser Sitzung anzeigen c9bbxxxxxxxxxxxxxxxxxxxxxxxx5
Filter hinzufügen: Nur Fehler von diesem Typ zeigen Art des Fehlers: Generell
Filter hinzufügen: Nur Fehlermeldungen dieser URL anzeigenhttp://www.easy-vdr.de/forum/index.php?action=admin;area=serversettings;sa=general;cffc5cfdea=c9bb0cxxxxxxxxxxxxxxxxxxxa985Filter hinzufügen: Nur Fehlermeldungen mit der gleichen Nachricht anzeigen2: Invalid argument supplied for foreach()Filter hinzufügen: Nur Fehler von dieser Datei zeigen Datei: /opt/www/easy-vdr.de/httpdocs/forum/Sources/PortaMx/Class/php.php(62) : eval()'d code
Zeile: 46


oder
QuoteChronologische Reihenfolge der Liste ändern Heute um 19:47:20
Filter hinzufügen: Nur Fehlermeldungen dieser Sitzung anzeigen 4eassssssssssssssssssss504
Filter hinzufügen: Nur Fehler von diesem Typ zeigen Art des Fehlers: Generell
Filter hinzufügen: Nur Fehlermeldungen dieser URL anzeigenhttp://www.easy-vdr.de/forum/index.php?Filter hinzufügen: Nur Fehlermeldungen mit der gleichen Nachricht anzeigen2: Invalid argument supplied for foreach()Filter hinzufügen: Nur Fehler von dieser Datei zeigen Datei: /opt/www/easy-vdr.de/httpdocs/forum/Sources/PortaMx/Class/php.php(62) : eval()'d code
Zeile: 46


oder
QuoteChronologische Reihenfolge der Liste ändern Heute um 19:46:54
Filter hinzufügen: Nur Fehlermeldungen dieser Sitzung anzeigen c9xxxxxxxxxxxxxxxxxxxxxxx85
Filter hinzufügen: Nur Fehler von diesem Typ zeigen Art des Fehlers: Undefiniert
Filter hinzufügen: Nur Fehlermeldungen dieser URL anzeigenhttp://www.easy-vdr.de/forum/index.php?action=admin;area=maintain;sa=routine;activity=logsFilter hinzufügen: Nur Fehlermeldungen mit der gleichen Nachricht anzeigen8: Undefined variable: dirsFilter hinzufügen: Nur Fehler von dieser Datei zeigen Datei: /opt/www/easy-vdr.de/httpdocs/forum/Sources/PortaMx/Class/php.php(62) : eval()'d code
Zeile: 46


Das für mich komische: Diese Aktionen beziehen sich nicht auf die Übersicht (http://www.easy-vdr.de/forum/index.php). Schalte ich den Block mit dem Bild ab ist es ruhig.

feline

#10
a year ago
Also .. ich kann das nicht richtig testen, da mir diese Galerie fehlt ..

Aber .. der fehler tritt hier auf (Zeile 46) weil $dirs nicht definiert oder kein array ist:
Code Select
foreach($dirs as $dirArr) {

Um zu sehen, was in dieser variablen steht, kannst mal du folgende mal machen:
VOR der Zeile 46 (da, wo
Code Select
foreach($dirs as $dirArr) { steht, fügst du zum testen folgendes ein
Code Select
echo PortaMx_Printvar($dirs, '$dirs');

Dann soltest du etwa sowas sehen:
$dirs = array(
   'dir1' => 'irgendwas',
   'dir2' => 'nochwas',
)

Auf die Resultate bin ich gespannt  ;)
Many are stubborn in relation to the path, a few in relation to the target.

ranseyer

#11
a year ago
Ahh, da kommt als Resultat nur:
"$dirs = "

ed: falls du das Script mal testen möchtest, müsstest du ja nur den Pfad für die Bilder so anpassen dass 2-3 Bilder gefunden werden.

array("/xxx/www/vhosts/xxx/httpdocs/gallery/albums/uxxxn","http://www.xxx.de/gallery/index.php?cat=2"),

Die URL kann so bleiben und zeigt dann halt auf meine Seite wenn man ein Bild anklickt...

Da meist der Anwender schuld ist, hab ich den Inhalt von Array nochmals untersucht, aber keinen Fehler gefunden.

feline

#12
a year ago
Sorry für die späte Antwort .. war ein paar tage ausser Haus ..

Also .. wenn $dirs leer ist, kann natürlich auch nichts angezeigt werden.
Warum das so ist kann ich leider nicht sagen .. das script ist schon sehr .. Hmm .. ugly  ^-^

Eventuell müsstest du vorherige variablen genau so untersuchen ..
Mit PortaMx_Printvar($varmame); gehts das ja wunderbar .. der zweite wert ist übrigens nur ein titel für das resultat, der muss nicht angegeben werden.

Mir scheint (da das script wohl aus PHP 4 Zeiten stammt), das da einiges unter einer höheren PHP version nicht mehr einwandfrei funktioniert ...
Many are stubborn in relation to the path, a few in relation to the target.