Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Modyfikacja skryptu demotywatory
Forum PHP.pl > Forum > Przedszkole
kamiel911
Witam wszystkich Uzytkownikow forum. Jestem tu nowy,wiec prosze o wyrozumialosc. Mam nadzieje ze zalozylem temat w odpowiednim mijescu.

Pobralem taki skrypt klona demotywatorow: http://hotfile.com/dl/57450212/00bd3db/Dem...neNapr.rar.html
Chcialbym go zmodyfikowac w ten sposob, by uzytkownik mogl dodawac dwa zdjecia, ktore umieszczane bylyby na wspolnym tle, tworzac jeden 'demotywator'.
W temacie php raczkuję. Przez miesiac probowalem jakos uporac sie z tym problemem,ale jakos nie bardzo mi to wychodzi. Chociaz przy okazji nauczylem sie wiele.

Chcialem zapytac jak zabrac sie do modyfikowania tego skryptu? Od czego zaczac? Czy jako poczatkujacy, w ogole jestem w stanie poradzic sobie z takim problemem?

Dziekuje za wszystkie podpowiedzi.
Kshyhoo
Chętnie Ci pomożemy, ale "pomożemy" a nie zrobimy za Ciebie. Wklej kod, z którym masz problemy...
kamiel911
Wlasnie o pomoc mi chodzi:)

doszedlem do wniosku ze z dodawaniem zdjec laczy sie kilka dokumentow i tak naprawde nie wiem w ktorym musze zrobic poprawki. Probowalem w sumie we wszystkich ale nic mi nie wyszlo:

glowny plik to:
  1. <?php echo $form->create('Post',array('url'=>array('controller'=>'front','action'=>'add'),'type'=>'file'));
  2. if(!$session->check('step2')):
  3. if($session->check('img') and !$session->check('step2')):
  4. ?>
  5. <img style="margin: 0 132px 30px;" src="<?php echo $dir; ?>pic/sess/<?php echo $session->read('img').'-1'.$session->read('hash').'.jpg'; ?>" />
  6. <?php elseif(!$session->check('img') and !$session->check('step2')): ?>
  7. <?php echo $form->input('Post.img',array('type'=>'file','label'=>'Obrazek','size'=>48)); ?>
  8. <?php endif; ?>
  9. <?php
  10. echo $form->input('Post.title',array('label'=>'Tytuł','onmouseover'=>'this.focus();'));
  11. echo $form->input('Post.body',array('type'=>'textarea','label'=>'Opis','onmouseover'=>'this.focus();'));
  12. ?>
  13. <div class="submit">
  14. <?php if($session->check('img') and !$session->check('step2')): ?><input type="submit" name="data[Post][cancel1]" value="Wyczyść" /><?php endif; ?><input type="submit" name="submit" value="Dalej ť" />
  15. </div>
  16. </form>
  17.  
  18. </div>
  19.  
  20. <?php
  21. else:
  22. ?>
  23. <img src="<?php $dir; ?>pic/sess/<?php echo $session->read('img').'-2'.$session->read('hash').'.jpg'; ?>" />
  24. <?php
  25. $tags = $this->requestAction('front/randomTagCloud');
  26. $tagCloud = $tag->create($tags);
  27. $tagCloud = $tag->shuffleTags($tagCloud);
  28. $cloud = null;
  29.  
  30. foreach($tagCloud as $tagName=>$tagValue) {
  31. $cloud .=
  32. "<a href='#' onClick='addTag(this); return false;' style='font-size:".$tagValue['size']."%; cursor: pointer;' title='".$tagName."'>".$tagName."</a> ";
  33. }
  34. ($tags == false) ? $after = null: $after = '<br /><br />'.$cloud;
  35. echo $form->input('Post.tag',array('label'=>'Tagi','between'=>'(rozdzielaj spacjami)<br />','after'=>$after, 'onmouseover'=>'this.focus();'));
  36. ?>
  37. <div class="submit">
  38. <input type="submit" name="data[Post][cancel2]" value="Ť Popraw" /><input type="submit" name="submit" value="Dodaj ť" />
  39. </div>
  40. </form>
  41. <?php
  42. endif;
  43. $cloud;
  44. ?>





funkcja add:


  1. public function add() {
  2. App::import('Sanitize');
  3. $this->pageTitle .= ' - Dodaj';
  4. if($this->data) {
  5. $u = $this->Upload;
  6. $s = $this->Session;
  7. if(isset($this->data['Post']['cancel1'])) {
  8. @unlink(WWW_ROOT.'pic/sess/'.$s->read('img').'-1'.$s->read('hash').'.jpg');
  9. $this->Post->id =(int) $s->read('id');
  10. $this->Post->delete();
  11. $s->delete('step2');
  12. $s->delete('id');
  13. $s->delete('img');
  14. $s->delete('hash');
  15. $this->redirect($this->referer());
  16. }
  17. if(isset($this->data['Post']['cancel2'])) {
  18. @unlink(WWW_ROOT.'pic/sess/'.$s->read('img').'-2'.$s->read('hash').'.jpg');
  19. $s->del('step2');
  20. return;
  21. }
  22. if((int)$s->read('Auth.User.active')===2) {
  23. $s->setFlash('Twoje konto jest nieaktywne, potwierdź adres email.');
  24. $this->redirect($this->referer());
  25. }
  26.  
  27. $tag = trim($this->data['Post']['tag']);
  28. (!empty($tag)) ? $tag = explode(' ',$tag): $tag = null;
  29.  
  30. if(!$s->check('step2')) {
  31. if(!$s->check('img')) {
  32. $u->upload($this->data['Post']['img']);
  33. } else {
  34. $u->upload(WWW_ROOT.'pic/sess/'.$s->read('img').'-1'.$s->read('hash').'.jpg');
  35. }
  36. if($u->uploaded) {
  37. if($s->check('img')) {
  38. $now = $s->read('img');
  39. } else {
  40. $now = time();
  41. }
  42. if($s->check('hash')) {
  43. $hash = $s->read('hash');
  44. } else {
  45. $hash = $this->Pwd->alphaNumPass();
  46. $s->write('hash',$hash);
  47. }
  48. $title = $this->data['Post']['title'];
  49. $body = trim($this->data['Post']['body']);
  50. $body = explode("\n",$body);
  51. $body[0] = trim($body[0]);
  52. $_size = 0;
  53. $_tsize = 0;
  54. if(!isset($body[1])) {
  55. $_size += 19;
  56. $_tsize += 11;
  57. } elseif((bool)(isset($body[1]) and !isset($body[2]))) {
  58. $_size += 8;
  59. }
  60. $u->file_new_name_body = 'img';
  61. $u->allowed = array('image/*');
  62. $u->image_convert = 'png';
  63. $u->image_resize = true;
  64. $u->image_x = 440;
  65. $u->image_safe_name = false;
  66. $u->image_ratio_y = true;
  67. $res = $u->process();
  68. $img = imagecreatefromstring($res);
  69. imagejpeg($img,WWW_ROOT.'pic/sess/'.$now.'-1'.$s->read('hash').'.jpg',100);
  70. imagedestroy($img);
  71. unset($res);
  72. $u->allowed = array('image/*');
  73. $u->image_convert = 'png';
  74. $u->image_resize = true;
  75. $u->image_x = 436;
  76. $u->image_ratio_y = true;
  77. $u->image_border_color = '#FFFFFF';
  78. $u->image_border = '2px 2px 2px 2px';
  79. $res = $u->process();
  80. if($u->processed) {
  81. $img = imagecreatefromstring($res);
  82. unset($res);
  83. $height = ($u->image_dst_y + 138);
  84. $bg = imagecreatetruecolor(500,$height);
  85. imagecopy($bg, $img,30,30,0,0,440,$height);
  86. $black = imagecolorallocate($bg,0,0,0);
  87. $white = imagecolorallocate($bg,255,255,255);
  88. $font = WWW_ROOT.'fonts/DejaVuSerif.ttf';
  89. $bbox = imagettfbbox(18,0,$font,$title);
  90. $x = $bbox[0] + (imagesx($bg) / 2) - ($bbox[4] / 2);
  91. $y = ($u->image_dst_y + 58 + $_tsize);
  92. imagettftext($bg,18,0,$x,$y,$white,$font,$title);
  93. $bbox = imagettfbbox(10,0,$font,$body[0]);
  94. $x = $bbox[0] + (imagesx($bg) / 2) - ($bbox[4] / 2);
  95. $y = ($u->image_dst_y + 78 + $_size);
  96. imagettftext($bg,10,0,$x,$y,$white,$font,$body[0]);
  97.  
  98. if(isset($body[1])) {
  99. $body[1] = trim($body[1]);
  100. $bbox = imagettfbbox(10,0,$font,$body[1]);
  101. $x = $bbox[0] + (imagesx($bg) / 2) - ($bbox[4] / 2);
  102. $y = ($u->image_dst_y + 96 + $_size);
  103. imagettftext($bg,10,0,$x,$y,$white,$font,$body[1]);
  104. }
  105. if(isset($body[2])) {
  106. $body[2] = trim($body[2]);
  107. $bbox = imagettfbbox(10,0,$font,$body[2]);
  108. $x = $bbox[0] + (imagesx($bg) / 2) - ($bbox[4] / 2);
  109. $y = ($u->image_dst_y + 114);
  110. imagettftext($bg,10,0,$x,$y,$white,$font,$body[2]);
  111. }
  112. $gray = imagecolorallocate($bg,80,80,80);
  113. $bbox = imagettfbbox(8,0,$font,$_SERVER['HTTP_HOST']);
  114. $x = $bbox[0] + (imagesx($bg) / 2) - ($bbox[4] / 2);
  115. $y = ($u->image_dst_y + 134);
  116. imagettftext($bg,8,0,$x,$y,$gray,$font,$_SERVER['HTTP_HOST']);
  117. imagejpeg($bg, WWW_ROOT.'pic/sess/'.$now.'-2'.$s->read('hash').'.jpg',100);
  118. imagedestroy($img);
  119. imagedestroy($bg);
  120. if(!$s->check('id')) {
  121. $this->Post->create();
  122. } else {
  123. $this->Post->id =(int) $s->read('id');
  124. }
  125. $this->Post->set('public',2);
  126. $this->Post->save(array(
  127. 'Post'=>array(
  128. 'id'=>$this->Post->id,
  129. 'user_id'=>$this->Session->read('Auth.User.id'),
  130. 'title'=>Sanitize::html($title),
  131. 'body'=>Sanitize::html($this->data['Post']['body']),
  132. 'img'=>'pic/'.$now.'-'.$hash.'.jpg'),
  133. 'public' => 2
  134. )
  135. );
  136. $s->write('id',$this->Post->id);
  137. $s->write('step2',true);
  138. $s->write('img',$now);
  139. return;
  140. } else {
  141. $s->setFlash('Nie można wgrać zdjęcia.');
  142. return;
  143. }
  144. }
  145. } else {
  146. $u->upload(WWW_ROOT.'pic/sess/'.$s->read('img').'-2'.$s->read('hash').'.jpg');
  147. if($u->uploaded) {
  148. $u->image_convert = 'jpg';
  149. $u->jpeg_quality = 100;
  150. $u->file_safe_name = false;
  151. $u->file_new_name_body = $s->read('img').'-'.$s->read('hash');
  152. $u->process(WWW_ROOT.'/pic/');
  153. if($u->processed) {
  154. @unlink(WWW_ROOT.'pic/sess/'.$s->read('img').'-1'.$s->read('hash').'.jpg');
  155. @unlink(WWW_ROOT.'pic/sess/'.$s->read('img').'-2'.$s->read('hash').'.jpg');
  156. unset($img,$img2);
  157. $this->Post->id =(int) $s->read('id');
  158. $this->Post->set('public', 0);
  159. $this->Post->set('created',date('Y-m-d H:i:s',strtotime('now')));
  160. $this->Post->set('modified',date('Y-m-d H:i:s',strtotime('now')));
  161. $this->Post->save();
  162. if(!empty($tag)) {
  163. $tag = array_unique($tag);
  164. foreach($tag as $k=>$v) {
  165. if($k==(int) $this->getOpt('max_tags'))
  166. break;
  167. $v = trim($v);
  168. $v = strip_tags($v);
  169. $t = $this->Tag->findByName($v);
  170. if($t) {
  171. $this->PostsTag->create();
  172. $this->Tag->id=$t['Tag']['id'];
  173. $this->Tag->save(array('Tag'=>array('post_count'=>($t['Tag']['post_count']+1))));
  174. $this->PostsTag->save(array('PostsTag'=>array('post_id'=>$this->Post->id,'tag_id'=>$t['Tag']['id'])));
  175. continue;
  176. }
  177. $this->Tag->create();
  178. $this->Tag->save(array('Tag'=>array('name'=>trim($v),'post_count'=>1)));
  179. $this->PostsTag->create();
  180. $this->PostsTag->save(array('PostsTag'=>array('post_id'=>$this->Post->id,'tag_id'=>$this->Tag->id)));
  181. }
  182. }
  183. $s->del('id');
  184. $s->del('step2');
  185. $s->del('img');
  186. $s->del('hash');
  187. $this->redirect('/view/'.$this->Post->id);
  188. }
  189. }
  190. }
  191. }
  192. }
  193.  




Ponadto jest jeszcze dlugi plik o nazwie "upload",ale nie wiem czy jest on niezbedny. Probowalem to kopiowac, dodawac podobna funkcje add2 itp. ale nie przynioslo to skutku.
emajl22
Cytat(kamiel911 @ 24.12.2010, 15:13:44 ) *
Chcialem zapytac jak zabrac sie do modyfikowania tego skryptu? Od czego zaczac? Czy jako poczatkujacy, w ogole jestem w stanie poradzic sobie z takim problemem?


Cytat(Kshyhoo @ 24.12.2010, 15:27:49 ) *
Chętnie Ci pomożemy, ale "pomożemy" a nie zrobimy za Ciebie. Wklej kod, z którym masz problemy...


NAUCZ SIĘ CZYTAĆ ZE ZROZUMIENIEM, A POMÓC TO CHYBA TRZEBA TOBIE

kamiel911
Ze zrozumieniem nie umiesz czytac chyba Ty. Jezeli nie masz nic tworczego do dodania to nie zabieraj glosu. Twoja zale, krzyki i mysli bładzace gdzies w intelektualnym brodziku naprawde nikogo nie interesuja. Zaznaczylem w pierwszym poscie ze nie wiem od czego zaczac i chcialbym by ktos mnie naprowadzil.

markonix
Zacznij od znalezienia odpowiedzialnego pliku.
Znajdziesz go w adresie paska przeglądarki (może to być plik albo akcja przekazana GETem typu ?action=add).
Mephistofeles
Myślę, że raczej chodzi tu o samo includowanie wielu plików, na to nie ma rady, choć można przy dobrym IDE podejrzeć fragment pliku, w którym funkcja/klasa się znajduje i przejść do tej deklaracji.
nekomata
Skoro wiele się nauczyłeś to powiem ci tak... łatwiej będzie ci to napisać od nowa(przynajmniej ja bym tak zrobił) sam się dopiero uczę ale zauważyłem ze jak mam napisać skrypt od nowa to łatwiej mi przychodzi niż edycja czyjegoś,dodatkowo dokładnie wiesz jak ma wyglądać cel.. tylko zaplanuj czynności.Żeby nie było ze ci nie pomogę to ci napisze jak ja bym to rozplanował.
1.Upload obrazków. klik
2.Sprawdzenie wielkości obrazków.( biblioteka gd, getimagesize etc. klik )
3.Skalowanie(if większy od x etc... skaluj jeśli jest mniejszy zrób jakiś padding albo coś... potem znowu gd.)
3.Najłatwiej otwórz sobie tło pod całego "demota" i nałóż najpierw pierwszy obrazek potem na "nałożony" nakładasz następny..
4.zapisujesz do pliku,dodajesz wpis do bazy etc.

No jak widać po mojej rozpisce to nie taki trudny ten skrypt..(z moimi kiepskimi umiejętnościami prawdopodobnie mógłbym go zrobić.. chociaż używałbym pomocy wujka google z 20 razy.
Dziękuję za uwagę mam na dzieję że pomogłem.
darko
Dokładnie tak jak napisał ~Mephistofeles zainstaluj dobre IDE z podpowiadaniem składni i nie będziesz miał problemów, co gdzie się znajduje. Przytrzymujesz ctrl lub shift i klikasz na dany obiekt i od razu otwiera się właściwy skrypt z definicją klasy. Polecam eclipse lub netbeans.
kamiel911
Dziekuje za wszytskie porady. Z tego co zrozumialem zalecacie pisanie skryptu od nowa,tak? obecnie korzystam z programu php designer.
darko
Cytat(kamiel911 @ 24.12.2010, 23:50:03 ) *
Dziekuje za wszytskie porady. Z tego co zrozumialem zalecacie pisanie skryptu od nowa,tak? obecnie korzystam z programu php designer.

Jeśli chcesz/musisz zrobić jakiekolwiek poprawki w skrypcie, którego kodu nie rozumiesz, to najlepiej byłoby, żebyś napisał od nowa swój własny skrypt, podpatrując przy tym, w jaki sposób ktoś inny podszedł do problemu. Przynajmniej się czegoś nauczysz. Inna sprawa to kwestia tego czy masz czas na pisanie od nowa.
kamiel911
A edycja tego skryptu to bardzo skomplikowana sprawa? Nie mozna w miare prsoto napisac nowa funkcje np add2? Zmieniajac kilka parametrow?
240volt
kamiel911 czy wiesz jak w tym skrypcie zmienić tytuł tak aby zamiast tekstu widniał obrazek, tu daje przykład o co mi chodzi http://xxx.host4u.pl/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.