Support » Plugin: Wp-ImageZoom » Works on 4.9, but bug found

  • An update to my earlier comment, see below:
    The code in wp-imagezoom.php makes an assumption that may not hold true if the code is being called successively with very little time between calls (I suspect a search engine crawler). The function wpImageZoom_makePrmID checks for the non-existence of the PrmID but leaves it to the caller to insert the PrmID in the database table. This can lead to two entries in the table with the same prmid.

    The solution I suggest is first to make prmid in table izoomparam the Primary key so that duplicate entries cannot occur. then replace the code at lines 119-212 in the current version which say
    if (count($result2)==0) {
    $prmid = wpImageZoom_makePrmID();
    $wpdb->insert( $wpdb->prefix . ‘izoomparam’, array(
    ‘imgid’ => $imgid,
    ‘prmid’ => $prmid,
    ‘complevel’ => $complevel,
    ‘zoomstep’ => $maxzoomstep,
    ‘maxzoomrate’ => $maxzoomrate,
    ‘zoomstep’ => $zoomstep,
    ‘downloadable’ => $downloadable)
    );
    } else {
    $prmid = $result2[0]->prmid;
    }
    with
    if (count($result2)==0) {
    $prmid = wpImageZoom_makePrmID($imgid);
    } else {
    $prmid = $result2[0]->prmid;
    }
    and to replace the entire function wpImageZoom_makePrmID on lines 238-249 with
    function wpImageZoom_makePrmID($imgid)
    {
    global $wpdb;
    do {
    $id = “”;
    for ($i=0; $i<5; $i++) {
    $id .= substr(“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”, mt_rand(0,61), 1);
    }
    $insertSQL = array(
    ‘imgid’ => $imgid,
    ‘prmid’ => $id,
    ‘complevel’ => -1,
    ‘zoomstep’ => -1,
    ‘maxzoomrate’ => -1,
    ‘zoomstep’ => -1,
    ‘downloadable’ => -1 );
    $result2 = $wpdb->insert( $wpdb->prefix . ‘izoomparam’, $insertSQL);
    } while (!result2);
    return $id;
    }
    This inserts the PrmID but it will only work if the key does not exist, if the key exists it goes round the loop again.

    ——————————————————————————–

    Successfully installed on 4.9.2 and it does just the job I wanted it for. I moved the work directory and made it writeable, as suggested by MartinW2. As I only have three images, I cut back the amount of cache allocated (this is one of the settings).

    It would be nice if one could put a heading on the zoom page, and also include an exit button in the menu. As it’s open source I may look at doing this later. It’s these small omissions that mean I give it four stars rather than five.

    Roger Cornwell

    • This topic was modified 4 years, 3 months ago by . Reason: Bug found and solved
  • The topic ‘Works on 4.9, but bug found’ is closed to new replies.