f0b8b0970fad576f54e223f914362208e7b66d4f
[atutor.git] / mods / wiki / plugins / edit / pageimage.php
1 <?php
2
3 /* 
4     This plugin allows users to select a page image graphic.
5     
6 */
7 /* 
8 * @author andy fundinger <afundinger@burgiss.com> 
9 * @based on aview_piclogocntrl.php and page_imagegallery.php
10 */
11
12 require_once('plugins/page/imagegallery.php');
13 define('EWIKI_PAGE_LOGOCNTRL_GALLERY','HeaderGallery');
14
15 $ewiki_plugins['edit_form_append'][] = 'ewiki_edit_form_append_pageimgcntrl';
16 $ewiki_plugins['edit_save'][]        = 'ewiki_edit_save_pageimgcntrl';
17 $ewiki_plugins['view_final'][]       = 'ewiki_add_title_image';
18
19 function ewiki_add_title_image(&$html, $id, &$data, $action) {
20     if(!isset($data['meta']['pageimage']) || ($data['meta']['pageimage'] == '') ){
21         return;
22     }
23     $imagename=$data['meta']['pageimage'];
24     $image=ewiki_database('GET',$imagename);
25     if((EWIKI_PROTECTED_MODE) &&!ewiki_auth($imagename, $image, "binary-get")){
26         return;
27     }
28     
29           #-- height, width
30       $x = $image['meta']["width"];
31       $y = $image['meta']["height"];
32     
33       #-- print a/img tag
34       $o .= '<img src="' . ewiki_script_binary("", $imagename)
35           . '" border="0" width="'.$x.'" height="'.$y.'"' 
36           . ' />'. "\n";
37           
38     $html=preg_replace('/<h2 class="page title">/','<h2 class="page title">' . $o,$html,1);
39
40 }
41
42 /**
43  * Save selected pageimage value by setting it in the meta field of save data array
44  * passed by reference.
45  * 
46  * @param array save associative array of ewiki form data
47  */
48 function ewiki_edit_save_pageimgcntrl(&$save){
49     if (isset($_REQUEST['pageimagecntrl']) ) {
50         if($_REQUEST['pageimagecntrl']==-1){
51             unset($save['meta']['pageimage']);
52         }else{
53             $imageExist=ewiki_database('FIND',array($_REQUEST['pageimagecntrl']));
54             //var_dump($imageExist);
55             if($imageExist[$_REQUEST['pageimagecntrl']])
56                 $save['meta']['pageimage'] = $_REQUEST['pageimagecntrl'];
57         }
58     }
59 }
60
61 function ewiki_edit_form_append_pageimgcntrl ($id, $data, $action){
62     global $ewiki_config;
63
64    #-- fetch and asort images
65    $sorted = array();
66    $result = ewiki_db::GETALL(array("flags", "created", "meta"));
67     while ($row = $result->get()) {    
68         if ((($row["flags"] & EWIKI_DB_F_TYPE) == EWIKI_DB_F_BINARY)
69             && (strpos($row['meta']['Content-Type'], 'image/') === 0)) {
70             if(isset($ewiki_config['image-galleries'][EWIKI_PAGE_LOGOCNTRL_GALLERY])){
71                 foreach($ewiki_config['image-galleries'][EWIKI_PAGE_LOGOCNTRL_GALLERY]as $field=>$value){
72                     if($row['meta'][$field]!=$value){
73                         continue (2);
74                     }
75                 }
76             } 
77             if (!EWIKI_PROTECTED_MODE || (EWIKI_PROTECTED_MODE_HIDING <= .5)|| ewiki_auth($row["id"], $uu, "binary-get")) {
78                 $sorted[$row["id"]] = substr($row['meta']["Content-Location"].' ('.$row["id"].')',0,70);
79                 //echo("adding ".$row["id"].", ".$sorted[$row["id"]]."<br />");
80             }           
81         }
82     }
83    arsort($sorted);
84
85    #-- start selector
86     $o = '
87         <br /><label for="pageimagecntrl">Choose Page Image (<A href="'.ewiki_script(EWIKI_PAGE_LOGOCNTRL_GALLERY).'">view thumbnails</A>):</label>
88         <select id="pageimagecntrl" name="pageimagecntrl">'.
89         '<option value="-1" '.(!isset($data['meta']['pageimage']) || $data['meta']['pageimage'] == '' ? ' selected="selected"' : '').'>None</option>'        ;
90         
91    foreach ($sorted as $image => $name) {   
92         $o .= '<option value="'.htmlentities($image).'"'.
93             (isset($data['meta']['pageimage']) && $image == $data['meta']['pageimage'] ? ' selected="selected"' : '').
94             '>'.htmlentities($name).'</option>';
95    }   
96    $o .= "</select>\n";
97
98    return($o);
99 }
100
101 ?>