Language: 
To browser these website, it's necessary to store cookies on your computer.
The cookies contain no personal information, they are required for program control.
  the storage of cookies while browsing this website, on Login and Register.

User

Welcome, Guest. Please login or register.
Did you miss your activation email?


Login with username, password and session length

Select language:

Community



Stats

  • *Total Members: 4442
  • *Latest: Argon2

  • *Total Posts: 16406
  • *Total Topics: 2506
  • *Online Today: 14
  • *Most Online: 292
(12.11.16, 09:37:31)
  • *Users: 0
  • *Guests: 0
  • *Spiders: 5
  • *Total: 5

  • *Yahoo!
  • *Google
  • *Baidu (3)

Author Topic: Block for Random Image from Coppermine Gallery ( CPG )  (Read 14430 times)

0 Members and 0 Guests are viewing this topic.

Offline ranseyer

  • Jr. Member
  • **
  • Posts: 52
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>";

Offline Powerbob

  • Sr. Member
  • ****
  • Posts: 338
  • Gender: Male
    • Rotary Club of Taksin-Pattaya
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 :)

Offline ranseyer

  • Jr. Member
  • **
  • Posts: 52
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"),

Offline kev

  • Newbie
  • *
  • Posts: 16
  • Gender: Male
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

Offline ranseyer

  • Jr. Member
  • **
  • Posts: 52
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...

Offline ranseyer

  • Jr. Member
  • **
  • Posts: 52
Nach Updates vom Portal (PortaMX) hagelt es diese Meldungen

Quote
2: 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...

Offline feline

  • CO PortaMx corp.
  • Administrator
  • *
  • Posts: 5786
  • Gender: Female
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.

Offline ranseyer

  • Jr. Member
  • **
  • Posts: 52
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.

Offline feline

  • CO PortaMx corp.
  • Administrator
  • *
  • Posts: 5786
  • Gender: Female
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.

Offline ranseyer

  • Jr. Member
  • **
  • Posts: 52
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;

Quote
   Chronologische 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
Quote
   Chronologische 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
Quote
   Chronologische 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.

Offline feline

  • CO PortaMx corp.
  • Administrator
  • *
  • Posts: 5786
  • Gender: Female
Re: Block for Random Image from Coppermine Gallery ( CPG )
« Reply #10 on: 13.04.16, 13:52:08 »
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.

Offline ranseyer

  • Jr. Member
  • **
  • Posts: 52
Re: Block for Random Image from Coppermine Gallery ( CPG )
« Reply #11 on: 14.04.16, 09:21:34 »
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.

Offline feline

  • CO PortaMx corp.
  • Administrator
  • *
  • Posts: 5786
  • Gender: Female
Re: Block for Random Image from Coppermine Gallery ( CPG )
« Reply #12 on: 21.04.16, 14:50:16 »
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.