1)); if (DBM::is_result($r)) { $guid = $r['guid']; } else { $guid = get_guid(); } $x = dba::select('photo', array('id'), array('resource-id' => $rid, 'uid' => $uid, 'contact-id' => $cid, 'scale' => $scale), array('limit' => 1)); $fields = array( 'uid' => $uid, 'contact-id' => $cid, 'guid' => $guid, 'resource-id' => $rid, 'created' => datetime_convert(), 'edited' => datetime_convert(), 'filename' => basename($filename), 'type' => $Image->getType(), 'album' => $album, 'height' => $Image->getHeight(), 'width' => $Image->getWidth(), 'datasize' => strlen($Image->asString()), 'data' => $Image->asString(), 'scale' => $scale, 'profile' => $profile, 'allow_cid' => $allow_cid, 'allow_gid' => $allow_gid, 'deny_cid' => $deny_cid, 'deny_gid' => $deny_gid, 'desc' => $desc ); if (DBM::is_result($x)) { $r = dba::update('photo', $fields, array('id' => $x['id'])); } else { $r = dba::insert('photo', $fields); } return $r; } /** * @param string $photo photo * @param integer $uid user id * @param integer $cid contact id * @param boolean $quit_on_error optional, default false * @return array */ public static function importProfilePhoto($photo, $uid, $cid, $quit_on_error = false) { $r = dba::select( 'photo', array('resource-id'), array('uid' => $uid, 'contact-id' => $cid, 'scale' => 4, 'album' => 'Contact Photos'), array('limit' => 1) ); if (DBM::is_result($r) && strlen($r['resource-id'])) { $hash = $r['resource-id']; } else { $hash = photo_new_resource(); } $photo_failure = false; $filename = basename($photo); $img_str = fetch_url($photo, true); if ($quit_on_error && ($img_str == "")) { return false; } $type = Image::guessType($photo, true); $Image = new Image($img_str, $type); if ($Image->isValid()) { $Image->scaleToSquare(175); $r = self::store($Image, $uid, $cid, $hash, $filename, 'Contact Photos', 4); if ($r === false) { $photo_failure = true; } $Image->scaleDown(80); $r = self::store($Image, $uid, $cid, $hash, $filename, 'Contact Photos', 5); if ($r === false) { $photo_failure = true; } $Image->scaleDown(48); $r = self::store($Image, $uid, $cid, $hash, $filename, 'Contact Photos', 6); if ($r === false) { $photo_failure = true; } $suffix = '?ts=' . time(); $photo = System::baseUrl() . '/photo/' . $hash . '-4.' . $Image->getExt() . $suffix; $thumb = System::baseUrl() . '/photo/' . $hash . '-5.' . $Image->getExt() . $suffix; $micro = System::baseUrl() . '/photo/' . $hash . '-6.' . $Image->getExt() . $suffix; // Remove the cached photo $a = get_app(); $basepath = $a->get_basepath(); if (is_dir($basepath . "/photo")) { $filename = $basepath . '/photo/' . $hash . '-4.' . $Image->getExt(); if (file_exists($filename)) { unlink($filename); } $filename = $basepath . '/photo/' . $hash . '-5.' . $Image->getExt(); if (file_exists($filename)) { unlink($filename); } $filename = $basepath . '/photo/' . $hash . '-6.' . $Image->getExt(); if (file_exists($filename)) { unlink($filename); } } } else { $photo_failure = true; } if ($photo_failure && $quit_on_error) { return false; } if ($photo_failure) { $photo = System::baseUrl() . '/images/person-175.jpg'; $thumb = System::baseUrl() . '/images/person-80.jpg'; $micro = System::baseUrl() . '/images/person-48.jpg'; } return array($photo, $thumb, $micro); } }